
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool get_symbol_location_info(Sized_relobj_file<64,_false> * this, uint
   shndx, off_t offset, Symbol_location_info * info) */

bool __thiscall
gold::Sized_relobj_file<64,_false>::get_symbol_location_info
          (Sized_relobj_file<64,_false> *this,uint shndx,off_t offset,Symbol_location_info *info)

{
  string *this_00;
  bool bVar1;
  ulong uVar2;
  Elf_Word shndx_00;
  uint uVar3;
  int iVar4;
  size_t sVar5;
  _func_int_varargs *p_Var6;
  undefined4 extraout_var;
  undefined4 extraout_var_00;
  undefined4 extraout_var_01;
  char *__ptr;
  ulong uVar7;
  Input_file *this_02;
  uint *puVar8;
  ulong uVar9;
  Location LVar10;
  uchar *local_50;
  section_size_type symbols_size;
  section_size_type names_size;
  Xindex *this_01;
  
  uVar3 = this->symtab_shndx_;
  if (uVar3 == 0) {
    return false;
  }
  p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];
  if (p_Var6 == do_section_contents) {
    puVar8 = (uint *)((long)&Sized_relobj_file<64,true>::
                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);
    LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents(&this->elf_file_,uVar3);
    symbols_size = LVar10.data_size;
    if (symbols_size != 0) {
      this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;
      if (this_02 == (Input_file *)0x0) goto LAB_001caff0;
      puVar8 = (uint *)File_read::get_view(&this_02->file_,
                                           (this->super_Sized_relobj<64,_false>).super_Relobj.
                                           super_Object.offset_,LVar10.file_offset,symbols_size,true
                                           ,false);
    }
  }
  else {
    iVar4 = (*p_Var6)(this,(ulong)uVar3,&symbols_size,0);
    puVar8 = (uint *)CONCAT44(extraout_var_01,iVar4);
  }
  p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x15];
  if (p_Var6 == do_section_link) {
    shndx_00 = elfcpp::Elf_file<64,_false,_gold::Object>::section_link
                         (&this->elf_file_,this->symtab_shndx_);
  }
  else {
    shndx_00 = (*p_Var6)(this);
  }
  if (shndx_00 < 0xff00) {
    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];
    if (p_Var6 == do_section_contents) {
LAB_001cad00:
      LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents
                         (&this->elf_file_,shndx_00);
      names_size = LVar10.data_size;
      local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::
                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);
      if (names_size != 0) {
        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;
        if (this_02 == (Input_file *)0x0) {
LAB_001caff0:
                    /* WARNING: Subroutine does not return */
          Object::input_file((Object *)this_02);
        }
        local_50 = File_read::get_view(&this_02->file_,
                                       (this->super_Sized_relobj<64,_false>).super_Relobj.
                                       super_Object.offset_,LVar10.file_offset,names_size,true,false
                                      );
      }
      goto LAB_001cad29;
    }
  }
  else {
    elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);
    shndx_00 = shndx_00 + (this->elf_file_).large_shndx_offset_;
    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];
    if (p_Var6 == do_section_contents) goto LAB_001cad00;
  }
  iVar4 = (*p_Var6)(this,(ulong)shndx_00,&names_size,0);
  local_50 = (uchar *)CONCAT44(extraout_var,iVar4);
LAB_001cad29:
  uVar7 = symbols_size / 0x18;
  if (symbols_size < 0x18) {
    return false;
  }
  uVar9 = 0;
  do {
    while ((puVar8[1] & 0xf) != 4) {
      uVar3 = (uint)*(ushort *)((long)puVar8 + 6);
      if (0xfeff < uVar3) {
        if (uVar3 != 0xffff) goto LAB_001cad63;
        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;
        if (this_01 == (Xindex *)0x0) {
          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object
                    [0x1b])(this);
          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);
          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;
        }
        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);
      }
      if (((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&
         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))) {
        uVar3 = *puVar8;
        this_00 = &info->enclosing_symbol_name;
        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;
        if (names_size < uVar3) {
          std::string::assign((string *)this_00,"(invalid)");
          return true;
        }
        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));
        if (parameters->options_ != (General_options *)0x0) {
          bVar1 = parameters->options_->do_demangle_;
          if ((bVar1 != false) &&
             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),
             __ptr != (char *)0x0)) {
            std::string::assign((string *)this_00,__ptr);
            free(__ptr);
            return bVar1;
          }
          return true;
        }
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
      }
LAB_001cad63:
      uVar9 = uVar9 + 1;
      puVar8 = puVar8 + 6;
      if (uVar7 <= uVar9) {
        return false;
      }
    }
    uVar3 = *puVar8;
    uVar2 = (info->source_file)._M_string_length;
    if (uVar3 < names_size) {
      sVar5 = strlen((char *)(local_50 + uVar3));
      std::string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);
      goto LAB_001cad63;
    }
    uVar9 = uVar9 + 1;
    puVar8 = puVar8 + 6;
    std::string::_M_replace((string *)info,0,uVar2,"(invalid)",9);
    if (uVar7 <= uVar9) {
      return false;
    }
  } while( true );
}



char FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)

{
  char cVar1;
  int iVar2;
  undefined8 uVar3;
  uint uVar4;
  size_t sVar5;
  code *pcVar6;
  long lVar7;
  void *__ptr;
  char *__s;
  ulong uVar8;
  uint *puVar9;
  ulong uVar10;
  undefined1 auVar11 [16];
  long local_50;
  ulong local_48;
  ulong local_40 [2];
  
  iVar2 = *(int *)((long)param_1 + 0x11c);
  if (iVar2 == 0) {
    return '\0';
  }
  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {
    puVar9 = (uint *)((long)&DAT_003799a6 + 1);
    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);
    local_48 = auVar11._8_8_;
    if (local_48 != 0) {
      if (param_1[5] == 0) goto LAB_001caff0;
      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);
    }
  }
  else {
    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);
  }
  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {
    uVar4 = FUN_001caba0(param_1 + 0x1f);
  }
  else {
    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));
  }
  if (uVar4 < 0xff00) {
    pcVar6 = *(code **)(*param_1 + 0x70);
    if (pcVar6 == FUN_001ca450) {
LAB_001cad00:
      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);
      local_40[0] = auVar11._8_8_;
      local_50 = 0x3799a7;
      if (local_40[0] != 0) {
        if (param_1[5] == 0) {
LAB_001caff0:
                    /* WARNING: Subroutine does not return */
          FUN_001bcf60();
        }
        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);
      }
      goto LAB_001cad29;
    }
  }
  else {
    FUN_001682d0(param_1 + 0x1f);
    uVar4 = uVar4 + (int)param_1[0x22];
    pcVar6 = *(code **)(*param_1 + 0x70);
    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;
  }
  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);
LAB_001cad29:
  uVar8 = local_48 / 0x18;
  if (local_48 < 0x18) {
    return '\0';
  }
  uVar10 = 0;
  do {
    while ((puVar9[1] & 0xf) != 4) {
      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);
      if (0xfeff < uVar4) {
        if (uVar4 != 0xffff) goto LAB_001cad63;
        lVar7 = param_1[8];
        if (lVar7 == 0) {
          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);
          param_1[8] = lVar7;
        }
        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);
      }
      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&
         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {
        uVar4 = *puVar9;
        lVar7 = param_4 + 0x20;
        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;
        if (local_40[0] < uVar4) {
          FUN_002e2900(lVar7,"(invalid)");
          return '\x01';
        }
        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);
        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {
          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);
          if ((cVar1 != '\0') &&
             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)
             ) {
            FUN_002e2900(lVar7,__ptr);
            free(__ptr);
            return cVar1;
          }
          return '\x01';
        }
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/parameters.h",0x5c,"options");
      }
LAB_001cad63:
      uVar10 = uVar10 + 1;
      puVar9 = puVar9 + 6;
      if (uVar8 <= uVar10) {
        return '\0';
      }
    }
    uVar3 = *(undefined8 *)(param_4 + 8);
    if (*puVar9 < local_40[0]) {
      __s = (char *)((ulong)*puVar9 + local_50);
      sVar5 = strlen(__s);
      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);
      goto LAB_001cad63;
    }
    uVar10 = uVar10 + 1;
    puVar9 = puVar9 + 6;
    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);
    if (uVar8 <= uVar10) {
      return '\0';
    }
  } while( true );
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV EAX,dword ptr [RDI + 0x11c]
TEST EAX,EAX
JZ 0x001cae40
MOV qword ptr [RSP + 0x10],RDX
MOV RDX,qword ptr [RDI]
MOV RBP,RCX
MOV R12D,ESI
LEA R14,[0x1ca450]
MOV RBX,RDI
MOV R8,qword ptr [RDX + 0x70]
CMP R8,R14
JNZ 0x001caf80
LEA RDI,[RDI + 0xf8]
MOV ESI,EAX
LEA R13,[0x3799a7]
CALL 0x001ca3b0
MOV qword ptr [RSP + 0x20],RDX
TEST RDX,RDX
JNZ 0x001caef0
MOV RAX,qword ptr [RBX]
LEA RDX,[0x1cac40]
MOV ESI,dword ptr [RBX + 0x11c]
MOV RAX,qword ptr [RAX + 0xa8]
CMP RAX,RDX
JNZ 0x001caf98
LEA RDI,[RBX + 0xf8]
CALL 0x001caba0
MOV R15D,EAX
CMP R15D,0xfeff
JA 0x001caf28
MOV RAX,qword ptr [RBX]
MOV RAX,qword ptr [RAX + 0x70]
CMP RAX,R14
JNZ 0x001caf4b
LEA RDI,[RBX + 0xf8]
MOV ESI,R15D
CALL 0x001ca3b0
LEA RCX,[0x3799a7]
MOV qword ptr [RSP + 0x28],RDX
MOV qword ptr [RSP + 0x18],RCX
TEST RDX,RDX
JNZ 0x001caeb8
MOV RDX,-0x5555555555555555
MOV RCX,qword ptr [RSP + 0x20]
MOV RAX,RCX
MUL RDX
SHR RDX,0x4
MOV R14,RDX
CMP RCX,0x17
JBE 0x001cae40
XOR R15D,R15D
JMP 0x001cad74
CMP EAX,0xffff
JZ 0x001cae58
ADD R15,0x1
ADD R13,0x18
CMP R14,R15
JBE 0x001cae40
MOVZX EAX,byte ptr [R13 + 0x4]
AND EAX,0xf
CMP AL,0x4
JZ 0x001cae08
MOVZX EAX,word ptr [R13 + 0x6]
CMP EAX,0xfeff
JA 0x001cad58
CMP R12D,EAX
JNZ 0x001cad63
MOV RAX,qword ptr [R13 + 0x8]
MOV RSI,qword ptr [RSP + 0x10]
CMP RAX,RSI
JG 0x001cad63
ADD RAX,qword ptr [R13 + 0x10]
CMP RAX,RSI
JLE 0x001cad63
MOVZX EAX,byte ptr [R13 + 0x4]
MOV ESI,dword ptr [R13]
LEA R12,[RBP + 0x20]
AND EAX,0xf
MOV dword ptr [RBP + 0x40],EAX
CMP RSI,qword ptr [RSP + 0x28]
JA 0x001cafa5
ADD RSI,qword ptr [RSP + 0x18]
MOV RDI,R12
CALL 0x002e2900
MOV RAX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x001caff5
MOVZX EBX,byte ptr [RAX + 0x9055]
TEST BL,BL
JNZ 0x001cafbe
MOV EBX,0x1
JMP 0x001cae42
MOV ECX,dword ptr [R13]
MOV RDX,qword ptr [RBP + 0x8]
CMP RCX,qword ptr [RSP + 0x28]
JC 0x001cae80
MOV R8D,0x9
XOR ESI,ESI
MOV RDI,RBP
ADD R15,0x1
LEA RCX,[0x378282]
ADD R13,0x18
CALL 0x002e25a0
CMP R14,R15
JA 0x001cad74
NOP
XOR EBX,EBX
ADD RSP,0x38
MOV EAX,EBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,qword ptr [RBX + 0x40]
TEST RDI,RDI
JZ 0x001caf68
MOV EDX,R15D
MOV RSI,RBX
CALL 0x001bd230
CMP R12D,EAX
JNZ 0x001cad63
JMP 0x001cad95
ADD RCX,qword ptr [RSP + 0x18]
MOV qword ptr [RSP + 0x8],RDX
MOV RDI,RCX
MOV qword ptr [RSP],RCX
CALL 0x00147490
MOV RCX,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
XOR ESI,ESI
MOV R8,RAX
MOV RDI,RBP
CALL 0x002e25a0
JMP 0x001cad63
MOV RDI,qword ptr [RBX + 0x28]
TEST RDI,RDI
JZ 0x001caff0
MOV RSI,qword ptr [RBX + 0x30]
MOV RCX,RDX
ADD RDI,0x28
XOR R9D,R9D
MOV R8D,0x1
MOV RDX,RAX
CALL 0x0017b1d0
MOV qword ptr [RSP + 0x18],RAX
JMP 0x001cad29
MOV RDI,qword ptr [RBX + 0x28]
TEST RDI,RDI
JZ 0x001caff0
MOV RSI,qword ptr [RBX + 0x30]
MOV RCX,RDX
ADD RDI,0x28
XOR R9D,R9D
MOV R8D,0x1
MOV RDX,RAX
CALL 0x0017b1d0
MOV R13,RAX
JMP 0x001cacb4
LEA RDI,[RBX + 0xf8]
CALL 0x001682d0
MOV RAX,qword ptr [RBX]
ADD R15D,dword ptr [RBX + 0x110]
MOV RAX,qword ptr [RAX + 0x70]
CMP RAX,R14
JZ 0x001cad00
LEA RDX,[RSP + 0x28]
XOR ECX,ECX
MOV ESI,R15D
MOV RDI,RBX
CALL RAX
MOV qword ptr [RSP + 0x18],RAX
JMP 0x001cad29
MOV RAX,qword ptr [RBX]
MOV RDI,RBX
CALL qword ptr [RAX + 0xd8]
MOV RDI,RAX
MOV qword ptr [RBX + 0x40],RAX
JMP 0x001cae65
LEA RDX,[RSP + 0x20]
XOR ECX,ECX
MOV ESI,EAX
CALL R8
MOV R13,RAX
JMP 0x001cacb4
MOV RDI,RBX
CALL RAX
MOV R15D,EAX
JMP 0x001cace3
LEA RSI,[0x378282]
MOV RDI,R12
MOV EBX,0x1
CALL 0x002e2900
JMP 0x001cae42
MOV RDI,qword ptr [RBP + 0x20]
MOV ESI,0x3
CALL 0x002c3ad0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x001cadfa
MOV RDI,R12
MOV RSI,RAX
CALL 0x002e2900
MOV RDI,RBP
CALL 0x00147470
JMP 0x001cae42
CALL 0x001bcf60
LEA RDX,[0x379870]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
(translation_unit "char FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)\n\n{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}\n\n" (function_definition "char FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)\n\n{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)" identifier (parameter_list "(long *param_1,uint param_2,long param_3,long param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined1 auVar11 [16];" type_identifier (array_declarator "auVar11 [16]" identifier [ number_literal ]) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "ulong local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)((long)param_1 + 0x11c);" (assignment_expression "iVar2 = *(int *)((long)param_1 + 0x11c)" identifier = (pointer_expression "*(int *)((long)param_1 + 0x11c)" * (cast_expression "(int *)((long)param_1 + 0x11c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x11c)" ( (binary_expression "(long)param_1 + 0x11c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n    return '\0';\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return '\0';\n  }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) (if_statement "if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x70) == FUN_001ca450)" ( (binary_expression "*(code **)(*param_1 + 0x70) == FUN_001ca450" (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }" { (expression_statement "puVar9 = (uint *)((long)&DAT_003799a6 + 1);" (assignment_expression "puVar9 = (uint *)((long)&DAT_003799a6 + 1)" identifier = (cast_expression "(uint *)((long)&DAT_003799a6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&DAT_003799a6 + 1)" ( (binary_expression "(long)&DAT_003799a6 + 1" (cast_expression "(long)&DAT_003799a6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&DAT_003799a6" & identifier)) + number_literal) )))) ;) (expression_statement "auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);" (assignment_expression "auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2)" identifier = (call_expression "FUN_001ca3b0(param_1 + 0x1f,iVar2)" identifier (argument_list "(param_1 + 0x1f,iVar2)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) , identifier )))) ;) (expression_statement "local_48 = auVar11._8_8_;" (assignment_expression "local_48 = auVar11._8_8_" identifier = (field_expression "auVar11._8_8_" identifier . field_identifier)) ;) (if_statement "if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }" { (if_statement "if (param_1[5] == 0) goto LAB_001caff0;" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001caff0;" goto statement_identifier ;)) (expression_statement "puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);" (assignment_expression "puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" identifier = (cast_expression "(uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" identifier (argument_list "(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" ( (binary_expression "param_1[5] + 0x28" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[6]" identifier [ number_literal ]) , (field_expression "auVar11._0_8_" identifier . field_identifier) , identifier , number_literal , number_literal ))))) ;) })) }) (else_clause "else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" else (compound_statement "{\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" { (expression_statement "puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);" (assignment_expression "puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" identifier = (cast_expression "(uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" (parenthesized_expression "(**(code **)(*param_1 + 0x70))" ( (pointer_expression "**(code **)(*param_1 + 0x70)" * (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,iVar2,&local_48,0)" ( identifier , identifier , (pointer_expression "&local_48" & identifier) , number_literal ))))) ;) }))) (if_statement "if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0xa8) == FUN_001cac40)" ( (binary_expression "*(code **)(*param_1 + 0xa8) == FUN_001cac40" (pointer_expression "*(code **)(*param_1 + 0xa8)" * (cast_expression "(code **)(*param_1 + 0xa8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xa8)" ( (binary_expression "*param_1 + 0xa8" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }" { (expression_statement "uVar4 = FUN_001caba0(param_1 + 0x1f);" (assignment_expression "uVar4 = FUN_001caba0(param_1 + 0x1f)" identifier = (call_expression "FUN_001caba0(param_1 + 0x1f)" identifier (argument_list "(param_1 + 0x1f)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) )))) ;) }) (else_clause "else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" else (compound_statement "{\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" { (expression_statement "uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));" (assignment_expression "uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c))" identifier = (call_expression "(**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c))" (parenthesized_expression "(**(code **)(*param_1 + 0xa8))" ( (pointer_expression "**(code **)(*param_1 + 0xa8)" * (pointer_expression "*(code **)(*param_1 + 0xa8)" * (cast_expression "(code **)(*param_1 + 0xa8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xa8)" ( (binary_expression "*param_1 + 0xa8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,*(undefined4 *)((long)param_1 + 0x11c))" ( identifier , (pointer_expression "*(undefined4 *)((long)param_1 + 0x11c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x11c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x11c)" ( (binary_expression "(long)param_1 + 0x11c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (if_statement "if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" if (parenthesized_expression "(uVar4 < 0xff00)" ( (binary_expression "uVar4 < 0xff00" identifier < number_literal) )) (compound_statement "{\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }" { (expression_statement "pcVar6 = *(code **)(*param_1 + 0x70);" (assignment_expression "pcVar6 = *(code **)(*param_1 + 0x70)" identifier = (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }" if (parenthesized_expression "(pcVar6 == FUN_001ca450)" ( (binary_expression "pcVar6 == FUN_001ca450" identifier == identifier) )) (compound_statement "{\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }" { (labeled_statement "LAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);" statement_identifier : (expression_statement "auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);" (assignment_expression "auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4)" identifier = (call_expression "FUN_001ca3b0(param_1 + 0x1f,uVar4)" identifier (argument_list "(param_1 + 0x1f,uVar4)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) , identifier )))) ;)) (expression_statement "local_40[0] = auVar11._8_8_;" (assignment_expression "local_40[0] = auVar11._8_8_" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (field_expression "auVar11._8_8_" identifier . field_identifier)) ;) (expression_statement "local_50 = 0x3799a7;" (assignment_expression "local_50 = 0x3799a7" identifier = number_literal) ;) (if_statement "if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }" if (parenthesized_expression "(local_40[0] != 0)" ( (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }" { (if_statement "if (param_1[5] == 0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();\n        }" { (labeled_statement "LAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          FUN_001bcf60();" statement_identifier : comment (expression_statement "FUN_001bcf60();" (call_expression "FUN_001bcf60()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);" (assignment_expression "local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" identifier = (call_expression "FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" identifier (argument_list "(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" ( (binary_expression "param_1[5] + 0x28" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[6]" identifier [ number_literal ]) , (field_expression "auVar11._0_8_" identifier . field_identifier) , (subscript_expression "local_40[0]" identifier [ number_literal ]) , number_literal , number_literal )))) ;) })) (goto_statement "goto LAB_001cad29;" goto statement_identifier ;) })) }) (else_clause "else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" else (compound_statement "{\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" { (expression_statement "FUN_001682d0(param_1 + 0x1f);" (call_expression "FUN_001682d0(param_1 + 0x1f)" identifier (argument_list "(param_1 + 0x1f)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) ))) ;) (expression_statement "uVar4 = uVar4 + (int)param_1[0x22];" (assignment_expression "uVar4 = uVar4 + (int)param_1[0x22]" identifier = (binary_expression "uVar4 + (int)param_1[0x22]" identifier + (cast_expression "(int)param_1[0x22]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x22]" identifier [ number_literal ])))) ;) (expression_statement "pcVar6 = *(code **)(*param_1 + 0x70);" (assignment_expression "pcVar6 = *(code **)(*param_1 + 0x70)" identifier = (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar6 == FUN_001ca450) goto LAB_001cad00;" if (parenthesized_expression "(pcVar6 == FUN_001ca450)" ( (binary_expression "pcVar6 == FUN_001ca450" identifier == identifier) )) (goto_statement "goto LAB_001cad00;" goto statement_identifier ;)) }))) (expression_statement "local_50 = (*pcVar6)(param_1,uVar4,local_40,0);" (assignment_expression "local_50 = (*pcVar6)(param_1,uVar4,local_40,0)" identifier = (call_expression "(*pcVar6)(param_1,uVar4,local_40,0)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,uVar4,local_40,0)" ( identifier , identifier , identifier , number_literal )))) ;) (labeled_statement "LAB_001cad29:\n  uVar8 = local_48 / 0x18;" statement_identifier : (expression_statement "uVar8 = local_48 / 0x18;" (assignment_expression "uVar8 = local_48 / 0x18" identifier = (binary_expression "local_48 / 0x18" identifier / number_literal)) ;)) (if_statement "if (local_48 < 0x18) {\n    return '\0';\n  }" if (parenthesized_expression "(local_48 < 0x18)" ( (binary_expression "local_48 < 0x18" identifier < number_literal) )) (compound_statement "{\n    return '\0';\n  }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );" do (compound_statement "{\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  }" { (while_statement "while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }" while (parenthesized_expression "((puVar9[1] & 0xf) != 4)" ( (binary_expression "(puVar9[1] & 0xf) != 4" (parenthesized_expression "(puVar9[1] & 0xf)" ( (binary_expression "puVar9[1] & 0xf" (subscript_expression "puVar9[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }" { (expression_statement "uVar4 = (uint)*(ushort *)((long)puVar9 + 6);" (assignment_expression "uVar4 = (uint)*(ushort *)((long)puVar9 + 6)" identifier = (binary_expression "(uint)*(ushort *)((long)puVar9 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((long)puVar9 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 6)" ( (binary_expression "(long)puVar9 + 6" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }" if (parenthesized_expression "(0xfeff < uVar4)" ( (binary_expression "0xfeff < uVar4" number_literal < identifier) )) (compound_statement "{\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }" { (if_statement "if (uVar4 != 0xffff) goto LAB_001cad63;" if (parenthesized_expression "(uVar4 != 0xffff)" ( (binary_expression "uVar4 != 0xffff" identifier != number_literal) )) (goto_statement "goto LAB_001cad63;" goto statement_identifier ;)) (expression_statement "lVar7 = param_1[8];" (assignment_expression "lVar7 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (if_statement "if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }" { (expression_statement "lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);" (assignment_expression "lVar7 = (**(code **)(*param_1 + 0xd8))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0xd8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xd8))" ( (pointer_expression "**(code **)(*param_1 + 0xd8)" * (pointer_expression "*(code **)(*param_1 + 0xd8)" * (cast_expression "(code **)(*param_1 + 0xd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xd8)" ( (binary_expression "*param_1 + 0xd8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_1[8] = lVar7;" (assignment_expression "param_1[8] = lVar7" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);" (assignment_expression "uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff)" identifier = (call_expression "FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff)" identifier (argument_list "(lVar7,param_1,uVar10 & 0xffffffff)" ( identifier , identifier , (binary_expression "uVar10 & 0xffffffff" identifier & number_literal) )))) ;) })) (if_statement "if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" if (parenthesized_expression "(((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)))" ( (binary_expression "((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))" (parenthesized_expression "((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3))" ( (binary_expression "(param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)" (parenthesized_expression "(param_2 == uVar4)" ( (binary_expression "param_2 == uVar4" identifier == identifier) )) && (parenthesized_expression "(*(long *)(puVar9 + 2) <= param_3)" ( (binary_expression "*(long *)(puVar9 + 2) <= param_3" (pointer_expression "*(long *)(puVar9 + 2)" * (cast_expression "(long *)(puVar9 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) <= identifier) ))) )) && (parenthesized_expression "(param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))" ( (binary_expression "param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)" identifier < (binary_expression "*(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)" (pointer_expression "*(long *)(puVar9 + 2)" * (cast_expression "(long *)(puVar9 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) + (pointer_expression "*(long *)(puVar9 + 4)" * (cast_expression "(long *)(puVar9 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))))) ))) )) (compound_statement "{\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    /* WARNING: Subroutine does not return */\n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" { (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "lVar7 = param_4 + 0x20;" (assignment_expression "lVar7 = param_4 + 0x20" identifier = (binary_expression "param_4 + 0x20" identifier + number_literal)) ;) (expression_statement "*(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;" (assignment_expression "*(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf" (pointer_expression "*(uint *)(param_4 + 0x40)" * (cast_expression "(uint *)(param_4 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x40)" ( (binary_expression "param_4 + 0x40" identifier + number_literal) )))) = (binary_expression "(byte)puVar9[1] & 0xf" (cast_expression "(byte)puVar9[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[1]" identifier [ number_literal ])) & number_literal)) ;) (if_statement "if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }" if (parenthesized_expression "(local_40[0] < uVar4)" ( (binary_expression "local_40[0] < uVar4" (subscript_expression "local_40[0]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }" { (expression_statement "FUN_002e2900(lVar7,"(invalid)");" (call_expression "FUN_002e2900(lVar7,"(invalid)")" identifier (argument_list "(lVar7,"(invalid)")" ( identifier , (string_literal ""(invalid)"" " string_content ") ))) ;) (return_statement "return '\x01';" return (char_literal "'\x01'" ' escape_sequence ') ;) })) (expression_statement "FUN_002e2900(lVar7,(ulong)uVar4 + local_50);" (call_expression "FUN_002e2900(lVar7,(ulong)uVar4 + local_50)" identifier (argument_list "(lVar7,(ulong)uVar4 + local_50)" ( identifier , (binary_expression "(ulong)uVar4 + local_50" (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }" { (expression_statement "cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);" (assignment_expression "cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" identifier = (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }" if (parenthesized_expression "((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             )" ( (binary_expression "(cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)" ( (comma_expression "__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0" (assignment_expression "__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" identifier = (cast_expression "(void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" identifier (argument_list "(*(undefined8 *)(param_4 + 0x20),3)" ( (pointer_expression "*(undefined8 *)(param_4 + 0x20)" * (cast_expression "(undefined8 *)(param_4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x20)" ( (binary_expression "param_4 + 0x20" identifier + number_literal) )))) , number_literal ))))) , (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }" { (expression_statement "FUN_002e2900(lVar7,__ptr);" (call_expression "FUN_002e2900(lVar7,__ptr)" identifier (argument_list "(lVar7,__ptr)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return cVar1;" return identifier ;) })) (return_statement "return '\x01';" return (char_literal "'\x01'" ' escape_sequence ') ;) })) comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (labeled_statement "LAB_001cad63:\n      uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "puVar9 = puVar9 + 6;" (assignment_expression "puVar9 = puVar9 + 6" identifier = (binary_expression "puVar9 + 6" identifier + number_literal)) ;) (if_statement "if (uVar8 <= uVar10) {\n        return '\0';\n      }" if (parenthesized_expression "(uVar8 <= uVar10)" ( (binary_expression "uVar8 <= uVar10" identifier <= identifier) )) (compound_statement "{\n        return '\0';\n      }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) })) (expression_statement "uVar3 = *(undefined8 *)(param_4 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_4 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_4 + 8)" * (cast_expression "(undefined8 *)(param_4 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }" if (parenthesized_expression "(*puVar9 < local_40[0])" ( (binary_expression "*puVar9 < local_40[0]" (pointer_expression "*puVar9" * identifier) < (subscript_expression "local_40[0]" identifier [ number_literal ])) )) (compound_statement "{\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }" { (expression_statement "__s = (char *)((ulong)*puVar9 + local_50);" (assignment_expression "__s = (char *)((ulong)*puVar9 + local_50)" identifier = (cast_expression "(char *)((ulong)*puVar9 + local_50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)*puVar9 + local_50)" ( (binary_expression "(ulong)*puVar9 + local_50" (binary_expression "(ulong)*puVar9" (parenthesized_expression "(ulong)" ( identifier )) * identifier) + identifier) )))) ;) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "FUN_002e25a0(param_4,0,uVar3,__s,sVar5);" (call_expression "FUN_002e25a0(param_4,0,uVar3,__s,sVar5)" identifier (argument_list "(param_4,0,uVar3,__s,sVar5)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_001cad63;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 6;" (assignment_expression "puVar9 = puVar9 + 6" identifier = (binary_expression "puVar9 + 6" identifier + number_literal)) ;) (expression_statement "FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);" (call_expression "FUN_002e25a0(param_4,0,uVar3,"(invalid)",9)" identifier (argument_list "(param_4,0,uVar3,"(invalid)",9)" ( identifier , number_literal , identifier , (string_literal ""(invalid)"" " string_content ") , number_literal ))) ;) (if_statement "if (uVar8 <= uVar10) {\n      return '\0';\n    }" if (parenthesized_expression "(uVar8 <= uVar10)" ( (binary_expression "uVar8 <= uVar10" identifier <= identifier) )) (compound_statement "{\n      return '\0';\n    }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "STT": Some values do not have unique names */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: bool get_symbol_location_info(Sized_relobj_file<64,_false> * this, uint\n   shndx, off_t offset, Symbol_location_info * info) */\n\nbool __thiscall\ngold::Sized_relobj_file<64,_false>::get_symbol_location_info\n          (Sized_relobj_file<64,_false> *this,uint shndx,off_t offset,Symbol_location_info *info)\n\n{\n  string *this_00;\n  bool bVar1;\n  ulong uVar2;\n  Elf_Word shndx_00;\n  uint uVar3;\n  int iVar4;\n  size_t sVar5;\n  _func_int_varargs *p_Var6;\n  undefined4 extraout_var;\n  undefined4 extraout_var_00;\n  undefined4 extraout_var_01;\n  char *__ptr;\n  ulong uVar7;\n  Input_file *this_02;\n  uint *puVar8;\n  ulong uVar9;\n  Location LVar10;\n  uchar *local_50;\n  section_size_type symbols_size;\n  section_size_type names_size;\n  Xindex *this_01;\n  \n  uVar3 = this->symtab_shndx_;\n  if (uVar3 == 0) {\n    return false;\n  }\n  p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n  if (p_Var6 == do_section_contents) {\n    puVar8 = (uint *)((long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n    LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents(&this->elf_file_,uVar3);\n    symbols_size = LVar10.data_size;\n    if (symbols_size != 0) {\n      this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (this_02 == (Input_file *)0x0) goto LAB_001caff0;\n      puVar8 = (uint *)File_read::get_view(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false);\n    }\n  }\n  else {\n    iVar4 = (*p_Var6)(this,(ulong)uVar3,&symbols_size,0);\n    puVar8 = (uint *)CONCAT44(extraout_var_01,iVar4);\n  }\n  p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x15];\n  if (p_Var6 == do_section_link) {\n    shndx_00 = elfcpp::Elf_file<64,_false,_gold::Object>::section_link\n                         (&this->elf_file_,this->symtab_shndx_);\n  }\n  else {\n    shndx_00 = (*p_Var6)(this);\n  }\n  if (shndx_00 < 0xff00) {\n    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n    if (p_Var6 == do_section_contents) {\nLAB_001cad00:\n      LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents\n                         (&this->elf_file_,shndx_00);\n      names_size = LVar10.data_size;\n      local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n      if (names_size != 0) {\n        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }\n        local_50 = File_read::get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n    shndx_00 = shndx_00 + (this->elf_file_).large_shndx_offset_;\n    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n    if (p_Var6 == do_section_contents) goto LAB_001cad00;\n  }\n  iVar4 = (*p_Var6)(this,(ulong)shndx_00,&names_size,0);\n  local_50 = (uchar *)CONCAT44(extraout_var,iVar4);\nLAB_001cad29:\n  uVar7 = symbols_size / 0x18;\n  if (symbols_size < 0x18) {\n    return false;\n  }\n  uVar9 = 0;\n  do {\n    while ((puVar8[1] & 0xf) != 4) {\n      uVar3 = (uint)*(ushort *)((long)puVar8 + 6);\n      if (0xfeff < uVar3) {\n        if (uVar3 != 0xffff) goto LAB_001cad63;\n        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;\n        if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }\n        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);\n      }\n      if (((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))) {\n        uVar3 = *puVar8;\n        this_00 = &info->enclosing_symbol_name;\n        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;\n        if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }\n        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));\n        if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar9 = uVar9 + 1;\n      puVar8 = puVar8 + 6;\n      if (uVar7 <= uVar9) {\n        return false;\n      }\n    }\n    uVar3 = *puVar8;\n    uVar2 = (info->source_file)._M_string_length;\n    if (uVar3 < names_size) {\n      sVar5 = strlen((char *)(local_50 + uVar3));\n      std::string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);\n      goto LAB_001cad63;\n    }\n    uVar9 = uVar9 + 1;\n    puVar8 = puVar8 + 6;\n    std::string::_M_replace((string *)info,0,uVar2,"(invalid)",9);\n    if (uVar7 <= uVar9) {\n      return false;\n    }\n  } while( true );\n}\n\n" comment comment comment comment (declaration "bool __thiscall\ngold::Sized_relobj_file<64,_false>::get_symbol_location_info\n          (Sized_relobj_file<64,_false> *this,uint shndx,off_t offset,Symbol_location_info *info)\n\n{\n  string *this_00;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::get_symbol_location_info\n          (Sized_relobj_file<64,_false> *this,uint shndx,off_t offset,Symbol_location_info *info)\n\n{\n  string" identifier > : : (function_declarator "get_symbol_location_info\n          (Sized_relobj_file<64,_false> *this,uint shndx,off_t offset,Symbol_location_info *info)" identifier (parameter_list "(Sized_relobj_file<64,_false> *this,uint shndx,off_t offset,Symbol_location_info *info)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "off_t offset" type_identifier identifier) , (parameter_declaration "Symbol_location_info *info" type_identifier (pointer_declarator "*info" * identifier)) ))) { identifier) (pointer_declarator "*this_00" * identifier) ;) (declaration "bool bVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "Elf_Word shndx_00;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "_func_int_varargs *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "undefined4 extraout_var_00;" type_identifier identifier ;) (declaration "undefined4 extraout_var_01;" type_identifier identifier ;) (declaration "char *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "Input_file *this_02;" type_identifier (pointer_declarator "*this_02" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "Location LVar10;" type_identifier identifier ;) (declaration "uchar *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "section_size_type symbols_size;" type_identifier identifier ;) (declaration "section_size_type names_size;" type_identifier identifier ;) (declaration "Xindex *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (expression_statement "uVar3 = this->symtab_shndx_;" (assignment_expression "uVar3 = this->symtab_shndx_" identifier = (field_expression "this->symtab_shndx_" identifier -> field_identifier)) ;) (if_statement "if (uVar3 == 0) {\n    return false;\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];" (assignment_expression "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe]" identifier = (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var6 == do_section_contents) {\n    puVar8 = (uint *)((long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n    LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents(&this->elf_file_,uVar3);\n    symbols_size = LVar10.data_size;\n    if (symbols_size != 0) {\n      this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (this_02 == (Input_file *)0x0) goto LAB_001caff0;\n      puVar8 = (uint *)File_read::get_view(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false);\n    }\n  }\n  else {\n    iVar4 = (*p_Var6)(this,(ulong)uVar3,&symbols_size,0);\n    puVar8 = (uint *)CONCAT44(extraout_var_01,iVar4);\n  }" if (parenthesized_expression "(p_Var6 == do_section_contents)" ( (binary_expression "p_Var6 == do_section_contents" identifier == identifier) )) (compound_statement "{\n    puVar8 = (uint *)((long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n    LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents(&this->elf_file_,uVar3);\n    symbols_size = LVar10.data_size;\n    if (symbols_size != 0) {\n      this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (this_02 == (Input_file *)0x0) goto LAB_001caff0;\n      puVar8 = (uint *)File_read::get_view(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false);\n    }\n  }" { (expression_statement "puVar8 = (uint *)((long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);" (assignment_expression "puVar8 = (uint *)((long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1)" identifier = (cast_expression "(uint *)((long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1)" ( (ERROR "(long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)::" (comma_expression "(long)&Sized_relobj_file<64,true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)" (binary_expression "(long)&Sized_relobj_file<64" (cast_expression "(long)&Sized_relobj_file" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&Sized_relobj_file" & identifier)) < number_literal) , (binary_expression "true>::\n                             do_section_contents(unsigned_int,unsigned_long*,bool)" true > (ERROR "::" : :) (call_expression "do_section_contents(unsigned_int,unsigned_long*,bool)" identifier (argument_list "(unsigned_int,unsigned_long*,bool)" ( identifier , identifier (ERROR "*" *) , identifier ))))) : :) (binary_expression "empty + 1" identifier + number_literal) )))) ;) (ERROR "LVar10 = elfcpp::Elf_file<64,_false,_gold::" (comma_expression "LVar10 = elfcpp::Elf_file<64,_false,_gold" (binary_expression "LVar10 = elfcpp::Elf_file<64" (assignment_expression "LVar10 = elfcpp" identifier = identifier) (ERROR "::Elf_file" : : identifier) < number_literal) , (comma_expression "_false,_gold" identifier , identifier)) : :) (expression_statement "Object>::section_contents(&this->elf_file_,uVar3);" (binary_expression "Object>::section_contents(&this->elf_file_,uVar3)" identifier > (ERROR "::" : :) (call_expression "section_contents(&this->elf_file_,uVar3)" identifier (argument_list "(&this->elf_file_,uVar3)" ( (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) , identifier )))) ;) (expression_statement "symbols_size = LVar10.data_size;" (assignment_expression "symbols_size = LVar10.data_size" identifier = (field_expression "LVar10.data_size" identifier . field_identifier)) ;) (if_statement "if (symbols_size != 0) {\n      this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (this_02 == (Input_file *)0x0) goto LAB_001caff0;\n      puVar8 = (uint *)File_read::get_view(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false);\n    }" if (parenthesized_expression "(symbols_size != 0)" ( (binary_expression "symbols_size != 0" identifier != number_literal) )) (compound_statement "{\n      this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n      if (this_02 == (Input_file *)0x0) goto LAB_001caff0;\n      puVar8 = (uint *)File_read::get_view(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false);\n    }" { (expression_statement "this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;" (assignment_expression "this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" identifier = (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (this_02 == (Input_file *)0x0) goto LAB_001caff0;" if (parenthesized_expression "(this_02 == (Input_file *)0x0)" ( (binary_expression "this_02 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001caff0;" goto statement_identifier ;)) (ERROR "puVar8 = (uint *)File_read::" (assignment_expression "puVar8 = (uint *)File_read" identifier = (cast_expression "(uint *)File_read" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "get_view(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false);" (call_expression "get_view(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false)" identifier (argument_list "(&this_02->file_,\n                                           (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_,LVar10.file_offset,symbols_size,true\n                                           ,false)" ( (pointer_expression "&this_02->file_" & (field_expression "this_02->file_" identifier -> field_identifier)) , (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object.offset_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.\n                                           super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) , (field_expression "LVar10.file_offset" identifier . field_identifier) , identifier , true , false ))) ;) })) }) (else_clause "else {\n    iVar4 = (*p_Var6)(this,(ulong)uVar3,&symbols_size,0);\n    puVar8 = (uint *)CONCAT44(extraout_var_01,iVar4);\n  }" else (compound_statement "{\n    iVar4 = (*p_Var6)(this,(ulong)uVar3,&symbols_size,0);\n    puVar8 = (uint *)CONCAT44(extraout_var_01,iVar4);\n  }" { (expression_statement "iVar4 = (*p_Var6)(this,(ulong)uVar3,&symbols_size,0);" (assignment_expression "iVar4 = (*p_Var6)(this,(ulong)uVar3,&symbols_size,0)" identifier = (call_expression "(*p_Var6)(this,(ulong)uVar3,&symbols_size,0)" (parenthesized_expression "(*p_Var6)" ( (pointer_expression "*p_Var6" * identifier) )) (argument_list "(this,(ulong)uVar3,&symbols_size,0)" ( identifier , (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) , (pointer_expression "&symbols_size" & identifier) , number_literal )))) ;) (expression_statement "puVar8 = (uint *)CONCAT44(extraout_var_01,iVar4);" (assignment_expression "puVar8 = (uint *)CONCAT44(extraout_var_01,iVar4)" identifier = (cast_expression "(uint *)CONCAT44(extraout_var_01,iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var_01,iVar4)" identifier (argument_list "(extraout_var_01,iVar4)" ( identifier , identifier ))))) ;) }))) (expression_statement "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x15];" (assignment_expression "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x15]" identifier = (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x15]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var6 == do_section_link) {\n    shndx_00 = elfcpp::Elf_file<64,_false,_gold::Object>::section_link\n                         (&this->elf_file_,this->symtab_shndx_);\n  }\n  else {\n    shndx_00 = (*p_Var6)(this);\n  }" if (parenthesized_expression "(p_Var6 == do_section_link)" ( (binary_expression "p_Var6 == do_section_link" identifier == identifier) )) (compound_statement "{\n    shndx_00 = elfcpp::Elf_file<64,_false,_gold::Object>::section_link\n                         (&this->elf_file_,this->symtab_shndx_);\n  }" { (ERROR "shndx_00 = elfcpp::Elf_file<64,_false,_gold::" (comma_expression "shndx_00 = elfcpp::Elf_file<64,_false,_gold" (binary_expression "shndx_00 = elfcpp::Elf_file<64" (assignment_expression "shndx_00 = elfcpp" identifier = identifier) (ERROR "::Elf_file" : : identifier) < number_literal) , (comma_expression "_false,_gold" identifier , identifier)) : :) (expression_statement "Object>::section_link\n                         (&this->elf_file_,this->symtab_shndx_);" (binary_expression "Object>::section_link\n                         (&this->elf_file_,this->symtab_shndx_)" identifier > (ERROR "::" : :) (call_expression "section_link\n                         (&this->elf_file_,this->symtab_shndx_)" identifier (argument_list "(&this->elf_file_,this->symtab_shndx_)" ( (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) , (field_expression "this->symtab_shndx_" identifier -> field_identifier) )))) ;) }) (else_clause "else {\n    shndx_00 = (*p_Var6)(this);\n  }" else (compound_statement "{\n    shndx_00 = (*p_Var6)(this);\n  }" { (expression_statement "shndx_00 = (*p_Var6)(this);" (assignment_expression "shndx_00 = (*p_Var6)(this)" identifier = (call_expression "(*p_Var6)(this)" (parenthesized_expression "(*p_Var6)" ( (pointer_expression "*p_Var6" * identifier) )) (argument_list "(this)" ( identifier )))) ;) }))) (if_statement "if (shndx_00 < 0xff00) {\n    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n    if (p_Var6 == do_section_contents) {\nLAB_001cad00:\n      LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents\n                         (&this->elf_file_,shndx_00);\n      names_size = LVar10.data_size;\n      local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n      if (names_size != 0) {\n        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }\n        local_50 = File_read::get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n    shndx_00 = shndx_00 + (this->elf_file_).large_shndx_offset_;\n    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n    if (p_Var6 == do_section_contents) goto LAB_001cad00;\n  }" if (parenthesized_expression "(shndx_00 < 0xff00)" ( (binary_expression "shndx_00 < 0xff00" identifier < number_literal) )) (compound_statement "{\n    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n    if (p_Var6 == do_section_contents) {\nLAB_001cad00:\n      LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents\n                         (&this->elf_file_,shndx_00);\n      names_size = LVar10.data_size;\n      local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n      if (names_size != 0) {\n        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }\n        local_50 = File_read::get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );\n      }\n      goto LAB_001cad29;\n    }\n  }" { (expression_statement "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];" (assignment_expression "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe]" identifier = (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var6 == do_section_contents) {\nLAB_001cad00:\n      LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents\n                         (&this->elf_file_,shndx_00);\n      names_size = LVar10.data_size;\n      local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n      if (names_size != 0) {\n        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }\n        local_50 = File_read::get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );\n      }\n      goto LAB_001cad29;\n    }" if (parenthesized_expression "(p_Var6 == do_section_contents)" ( (binary_expression "p_Var6 == do_section_contents" identifier == identifier) )) (compound_statement "{\nLAB_001cad00:\n      LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents\n                         (&this->elf_file_,shndx_00);\n      names_size = LVar10.data_size;\n      local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);\n      if (names_size != 0) {\n        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }\n        local_50 = File_read::get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );\n      }\n      goto LAB_001cad29;\n    }" { (labeled_statement "LAB_001cad00:\n      LVar10 = elfcpp::Elf_file<64,_false,_gold::Object>::section_contents\n                         (&this->elf_file_,shndx_00);" statement_identifier : (ERROR "LVar10 = elfcpp::Elf_file<64,_false,_gold::" (comma_expression "LVar10 = elfcpp::Elf_file<64,_false,_gold" (binary_expression "LVar10 = elfcpp::Elf_file<64" (assignment_expression "LVar10 = elfcpp" identifier = identifier) (ERROR "::Elf_file" : : identifier) < number_literal) , (comma_expression "_false,_gold" identifier , identifier)) : :) (expression_statement "Object>::section_contents\n                         (&this->elf_file_,shndx_00);" (binary_expression "Object>::section_contents\n                         (&this->elf_file_,shndx_00)" identifier > (ERROR "::" : :) (call_expression "section_contents\n                         (&this->elf_file_,shndx_00)" identifier (argument_list "(&this->elf_file_,shndx_00)" ( (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier)) , identifier )))) ;)) (expression_statement "names_size = LVar10.data_size;" (assignment_expression "names_size = LVar10.data_size" identifier = (field_expression "LVar10.data_size" identifier . field_identifier)) ;) (expression_statement "local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1);" (assignment_expression "local_50 = (uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1)" identifier = (cast_expression "(uchar *)((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::empty + 1)" ( (ERROR "(long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)::" (comma_expression "(long)&Sized_relobj_file<64,true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)" (binary_expression "(long)&Sized_relobj_file<64" (cast_expression "(long)&Sized_relobj_file" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&Sized_relobj_file" & identifier)) < number_literal) , (binary_expression "true>::\n                                  do_section_contents(unsigned_int,unsigned_long*,bool)" true > (ERROR "::" : :) (call_expression "do_section_contents(unsigned_int,unsigned_long*,bool)" identifier (argument_list "(unsigned_int,unsigned_long*,bool)" ( identifier , identifier (ERROR "*" *) , identifier ))))) : :) (binary_expression "empty + 1" identifier + number_literal) )))) ;) (if_statement "if (names_size != 0) {\n        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }\n        local_50 = File_read::get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );\n      }" if (parenthesized_expression "(names_size != 0)" ( (binary_expression "names_size != 0" identifier != number_literal) )) (compound_statement "{\n        this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;\n        if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }\n        local_50 = File_read::get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );\n      }" { (expression_statement "this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;" (assignment_expression "this_02 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" identifier = (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (this_02 == (Input_file *)0x0) {\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }" if (parenthesized_expression "(this_02 == (Input_file *)0x0)" ( (binary_expression "this_02 == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);\n        }" { (labeled_statement "LAB_001caff0:\n                    /* WARNING: Subroutine does not return */\n          Object::input_file((Object *)this_02);" statement_identifier : comment (labeled_statement "Object::input_file((Object *)this_02);" statement_identifier : (ERROR ":" :) (expression_statement "input_file((Object *)this_02);" (call_expression "input_file((Object *)this_02)" identifier (argument_list "((Object *)this_02)" ( (cast_expression "(Object *)this_02" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) })) (ERROR "local_50 = File_read::" (assignment_expression "local_50 = File_read" identifier = identifier) : :) (expression_statement "get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      );" (call_expression "get_view(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      )" identifier (argument_list "(&this_02->file_,\n                                       (this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_,LVar10.file_offset,names_size,true,false\n                                      )" ( (pointer_expression "&this_02->file_" & (field_expression "this_02->file_" identifier -> field_identifier)) , (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object.offset_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.\n                                       super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) , (field_expression "LVar10.file_offset" identifier . field_identifier) , identifier , true , false ))) ;) })) (goto_statement "goto LAB_001cad29;" goto statement_identifier ;) })) }) (else_clause "else {\n    elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n    shndx_00 = shndx_00 + (this->elf_file_).large_shndx_offset_;\n    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n    if (p_Var6 == do_section_contents) goto LAB_001cad00;\n  }" else (compound_statement "{\n    elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);\n    shndx_00 = shndx_00 + (this->elf_file_).large_shndx_offset_;\n    p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];\n    if (p_Var6 == do_section_contents) goto LAB_001cad00;\n  }" { (labeled_statement "elfcpp::Elf_file<64,_false,_gold::Object>::initialize_shnum(&this->elf_file_);" statement_identifier (ERROR "::Elf_file<64,_false,_gold::Object>:" : : (comma_expression "Elf_file<64,_false,_gold" (binary_expression "Elf_file<64" 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 "shndx_00 = shndx_00 + (this->elf_file_).large_shndx_offset_;" (assignment_expression "shndx_00 = shndx_00 + (this->elf_file_).large_shndx_offset_" identifier = (binary_expression "shndx_00 + (this->elf_file_).large_shndx_offset_" identifier + (field_expression "(this->elf_file_).large_shndx_offset_" (parenthesized_expression "(this->elf_file_)" ( (field_expression "this->elf_file_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];" (assignment_expression "p_Var6 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe]" identifier = (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var6 == do_section_contents) goto LAB_001cad00;" if (parenthesized_expression "(p_Var6 == do_section_contents)" ( (binary_expression "p_Var6 == do_section_contents" identifier == identifier) )) (goto_statement "goto LAB_001cad00;" goto statement_identifier ;)) }))) (expression_statement "iVar4 = (*p_Var6)(this,(ulong)shndx_00,&names_size,0);" (assignment_expression "iVar4 = (*p_Var6)(this,(ulong)shndx_00,&names_size,0)" identifier = (call_expression "(*p_Var6)(this,(ulong)shndx_00,&names_size,0)" (parenthesized_expression "(*p_Var6)" ( (pointer_expression "*p_Var6" * identifier) )) (argument_list "(this,(ulong)shndx_00,&names_size,0)" ( identifier , (cast_expression "(ulong)shndx_00" ( (type_descriptor "ulong" type_identifier) ) identifier) , (pointer_expression "&names_size" & identifier) , number_literal )))) ;) (expression_statement "local_50 = (uchar *)CONCAT44(extraout_var,iVar4);" (assignment_expression "local_50 = (uchar *)CONCAT44(extraout_var,iVar4)" identifier = (cast_expression "(uchar *)CONCAT44(extraout_var,iVar4)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar4)" identifier (argument_list "(extraout_var,iVar4)" ( identifier , identifier ))))) ;) (labeled_statement "LAB_001cad29:\n  uVar7 = symbols_size / 0x18;" statement_identifier : (expression_statement "uVar7 = symbols_size / 0x18;" (assignment_expression "uVar7 = symbols_size / 0x18" identifier = (binary_expression "symbols_size / 0x18" identifier / number_literal)) ;)) (if_statement "if (symbols_size < 0x18) {\n    return false;\n  }" if (parenthesized_expression "(symbols_size < 0x18)" ( (binary_expression "symbols_size < 0x18" identifier < number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n    while ((puVar8[1] & 0xf) != 4) {\n      uVar3 = (uint)*(ushort *)((long)puVar8 + 6);\n      if (0xfeff < uVar3) {\n        if (uVar3 != 0xffff) goto LAB_001cad63;\n        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;\n        if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }\n        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);\n      }\n      if (((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))) {\n        uVar3 = *puVar8;\n        this_00 = &info->enclosing_symbol_name;\n        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;\n        if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }\n        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));\n        if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar9 = uVar9 + 1;\n      puVar8 = puVar8 + 6;\n      if (uVar7 <= uVar9) {\n        return false;\n      }\n    }\n    uVar3 = *puVar8;\n    uVar2 = (info->source_file)._M_string_length;\n    if (uVar3 < names_size) {\n      sVar5 = strlen((char *)(local_50 + uVar3));\n      std::string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);\n      goto LAB_001cad63;\n    }\n    uVar9 = uVar9 + 1;\n    puVar8 = puVar8 + 6;\n    std::string::_M_replace((string *)info,0,uVar2,"(invalid)",9);\n    if (uVar7 <= uVar9) {\n      return false;\n    }\n  } while( true );" do (compound_statement "{\n    while ((puVar8[1] & 0xf) != 4) {\n      uVar3 = (uint)*(ushort *)((long)puVar8 + 6);\n      if (0xfeff < uVar3) {\n        if (uVar3 != 0xffff) goto LAB_001cad63;\n        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;\n        if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }\n        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);\n      }\n      if (((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))) {\n        uVar3 = *puVar8;\n        this_00 = &info->enclosing_symbol_name;\n        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;\n        if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }\n        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));\n        if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar9 = uVar9 + 1;\n      puVar8 = puVar8 + 6;\n      if (uVar7 <= uVar9) {\n        return false;\n      }\n    }\n    uVar3 = *puVar8;\n    uVar2 = (info->source_file)._M_string_length;\n    if (uVar3 < names_size) {\n      sVar5 = strlen((char *)(local_50 + uVar3));\n      std::string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);\n      goto LAB_001cad63;\n    }\n    uVar9 = uVar9 + 1;\n    puVar8 = puVar8 + 6;\n    std::string::_M_replace((string *)info,0,uVar2,"(invalid)",9);\n    if (uVar7 <= uVar9) {\n      return false;\n    }\n  }" { (while_statement "while ((puVar8[1] & 0xf) != 4) {\n      uVar3 = (uint)*(ushort *)((long)puVar8 + 6);\n      if (0xfeff < uVar3) {\n        if (uVar3 != 0xffff) goto LAB_001cad63;\n        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;\n        if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }\n        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);\n      }\n      if (((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))) {\n        uVar3 = *puVar8;\n        this_00 = &info->enclosing_symbol_name;\n        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;\n        if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }\n        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));\n        if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar9 = uVar9 + 1;\n      puVar8 = puVar8 + 6;\n      if (uVar7 <= uVar9) {\n        return false;\n      }\n    }" while (parenthesized_expression "((puVar8[1] & 0xf) != 4)" ( (binary_expression "(puVar8[1] & 0xf) != 4" (parenthesized_expression "(puVar8[1] & 0xf)" ( (binary_expression "puVar8[1] & 0xf" (subscript_expression "puVar8[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar3 = (uint)*(ushort *)((long)puVar8 + 6);\n      if (0xfeff < uVar3) {\n        if (uVar3 != 0xffff) goto LAB_001cad63;\n        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;\n        if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }\n        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);\n      }\n      if (((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))) {\n        uVar3 = *puVar8;\n        this_00 = &info->enclosing_symbol_name;\n        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;\n        if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }\n        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));\n        if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar9 = uVar9 + 1;\n      puVar8 = puVar8 + 6;\n      if (uVar7 <= uVar9) {\n        return false;\n      }\n    }" { (expression_statement "uVar3 = (uint)*(ushort *)((long)puVar8 + 6);" (assignment_expression "uVar3 = (uint)*(ushort *)((long)puVar8 + 6)" identifier = (binary_expression "(uint)*(ushort *)((long)puVar8 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((long)puVar8 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 6)" ( (binary_expression "(long)puVar8 + 6" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar3) {\n        if (uVar3 != 0xffff) goto LAB_001cad63;\n        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;\n        if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }\n        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);\n      }" if (parenthesized_expression "(0xfeff < uVar3)" ( (binary_expression "0xfeff < uVar3" number_literal < identifier) )) (compound_statement "{\n        if (uVar3 != 0xffff) goto LAB_001cad63;\n        this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;\n        if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }\n        uVar3 = Xindex::sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);\n      }" { (if_statement "if (uVar3 != 0xffff) goto LAB_001cad63;" if (parenthesized_expression "(uVar3 != 0xffff)" ( (binary_expression "uVar3 != 0xffff" identifier != number_literal) )) (goto_statement "goto LAB_001cad63;" goto statement_identifier ;)) (expression_statement "this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;" (assignment_expression "this_01 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_" identifier = (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (this_01 == (Xindex *)0x0) {\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }" if (parenthesized_expression "(this_01 == (Xindex *)0x0)" ( (binary_expression "this_01 == (Xindex *)0x0" identifier == (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);\n          this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);\n          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;\n        }" { (expression_statement "iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this);" (assignment_expression "iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this)" identifier = (call_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])(this)" (parenthesized_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b])" ( (pointer_expression "*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b]" * (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1b]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier )))) ;) (expression_statement "this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4);" (assignment_expression "this_01 = (Xindex *)CONCAT44(extraout_var_00,iVar4)" identifier = (cast_expression "(Xindex *)CONCAT44(extraout_var_00,iVar4)" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var_00,iVar4)" identifier (argument_list "(extraout_var_00,iVar4)" ( identifier , identifier ))))) ;) (expression_statement "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01;" (assignment_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = this_01" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) = identifier) ;) })) (ERROR "uVar3 = Xindex::" (assignment_expression "uVar3 = Xindex" identifier = identifier) : :) (expression_statement "sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9);" (call_expression "sym_xindex_to_shndx(this_01,(Object *)this,(uint)uVar9)" identifier (argument_list "(this_01,(Object *)this,(uint)uVar9)" ( identifier , (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(uint)uVar9" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) })) (if_statement "if (((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))) {\n        uVar3 = *puVar8;\n        this_00 = &info->enclosing_symbol_name;\n        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;\n        if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }\n        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));\n        if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }" if (parenthesized_expression "(((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4)))" ( (binary_expression "((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)) &&\n         (offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))" (parenthesized_expression "((shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset))" ( (binary_expression "(shndx == uVar3) && (*(long *)(puVar8 + 2) <= offset)" (parenthesized_expression "(shndx == uVar3)" ( (binary_expression "shndx == uVar3" identifier == identifier) )) && (parenthesized_expression "(*(long *)(puVar8 + 2) <= offset)" ( (binary_expression "*(long *)(puVar8 + 2) <= offset" (pointer_expression "*(long *)(puVar8 + 2)" * (cast_expression "(long *)(puVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) <= identifier) ))) )) && (parenthesized_expression "(offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4))" ( (binary_expression "offset < *(long *)(puVar8 + 2) + *(long *)(puVar8 + 4)" identifier < (binary_expression "*(long *)(puVar8 + 2) + *(long *)(puVar8 + 4)" (pointer_expression "*(long *)(puVar8 + 2)" * (cast_expression "(long *)(puVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) + (pointer_expression "*(long *)(puVar8 + 4)" * (cast_expression "(long *)(puVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))))) ))) )) (compound_statement "{\n        uVar3 = *puVar8;\n        this_00 = &info->enclosing_symbol_name;\n        info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;\n        if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }\n        std::string::assign((string *)this_00,(char *)(local_50 + uVar3));\n        if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n      }" { (expression_statement "uVar3 = *puVar8;" (assignment_expression "uVar3 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "this_00 = &info->enclosing_symbol_name;" (assignment_expression "this_00 = &info->enclosing_symbol_name" identifier = (pointer_expression "&info->enclosing_symbol_name" & (field_expression "info->enclosing_symbol_name" identifier -> field_identifier))) ;) (expression_statement "info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC;" (assignment_expression "info->enclosing_symbol_type = (byte)puVar8[1] & STT_HIPROC" (field_expression "info->enclosing_symbol_type" identifier -> field_identifier) = (binary_expression "(byte)puVar8[1] & STT_HIPROC" (cast_expression "(byte)puVar8[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar8[1]" identifier [ number_literal ])) & identifier)) ;) (if_statement "if (names_size < uVar3) {\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }" if (parenthesized_expression "(names_size < uVar3)" ( (binary_expression "names_size < uVar3" identifier < identifier) )) (compound_statement "{\n          std::string::assign((string *)this_00,"(invalid)");\n          return true;\n        }" { (labeled_statement "std::string::assign((string *)this_00,"(invalid)");" statement_identifier : (ERROR ":" :) (labeled_statement "string::assign((string *)this_00,"(invalid)");" statement_identifier : (ERROR ":" :) (expression_statement "assign((string *)this_00,"(invalid)");" (call_expression "assign((string *)this_00,"(invalid)")" identifier (argument_list "((string *)this_00,"(invalid)")" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""(invalid)"" " string_content ") ))) ;))) (return_statement "return true;" return true ;) })) (labeled_statement "std::string::assign((string *)this_00,(char *)(local_50 + uVar3));" statement_identifier : (ERROR ":" :) (labeled_statement "string::assign((string *)this_00,(char *)(local_50 + uVar3));" statement_identifier : (ERROR ":" :) (expression_statement "assign((string *)this_00,(char *)(local_50 + uVar3));" (call_expression "assign((string *)this_00,(char *)(local_50 + uVar3))" identifier (argument_list "((string *)this_00,(char *)(local_50 + uVar3))" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)(local_50 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + uVar3)" ( (binary_expression "local_50 + uVar3" identifier + identifier) ))) ))) ;))) (if_statement "if (parameters->options_ != (General_options *)0x0) {\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }" if (parenthesized_expression "(parameters->options_ != (General_options *)0x0)" ( (binary_expression "parameters->options_ != (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) != (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          bVar1 = parameters->options_->do_demangle_;\n          if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }\n          return true;\n        }" { (expression_statement "bVar1 = parameters->options_->do_demangle_;" (assignment_expression "bVar1 = parameters->options_->do_demangle_" identifier = (field_expression "parameters->options_->do_demangle_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if ((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)) {\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }" if (parenthesized_expression "((bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0))" ( (binary_expression "(bVar1 != false) &&\n             (__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)" (parenthesized_expression "(bVar1 != false)" ( (binary_expression "bVar1 != false" identifier != false) )) && (parenthesized_expression "(__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0)" ( (comma_expression "__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3),\n             __ptr != (char *)0x0" (assignment_expression "__ptr = cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3)" identifier = (call_expression "cplus_demangle((info->enclosing_symbol_name)._M_dataplus._M_p,3)" identifier (argument_list "((info->enclosing_symbol_name)._M_dataplus._M_p,3)" ( (field_expression "(info->enclosing_symbol_name)._M_dataplus._M_p" (field_expression "(info->enclosing_symbol_name)._M_dataplus" (parenthesized_expression "(info->enclosing_symbol_name)" ( (field_expression "info->enclosing_symbol_name" identifier -> field_identifier) )) . field_identifier) . field_identifier) , number_literal )))) , (binary_expression "__ptr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n            std::string::assign((string *)this_00,__ptr);\n            free(__ptr);\n            return bVar1;\n          }" { (labeled_statement "std::string::assign((string *)this_00,__ptr);" statement_identifier : (ERROR ":" :) (labeled_statement "string::assign((string *)this_00,__ptr);" statement_identifier : (ERROR ":" :) (expression_statement "assign((string *)this_00,__ptr);" (call_expression "assign((string *)this_00,__ptr)" identifier (argument_list "((string *)this_00,__ptr)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return bVar1;" return identifier ;) })) (return_statement "return true;" return true ;) })) comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (labeled_statement "LAB_001cad63:\n      uVar9 = uVar9 + 1;" statement_identifier : (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;)) (expression_statement "puVar8 = puVar8 + 6;" (assignment_expression "puVar8 = puVar8 + 6" identifier = (binary_expression "puVar8 + 6" identifier + number_literal)) ;) (if_statement "if (uVar7 <= uVar9) {\n        return false;\n      }" if (parenthesized_expression "(uVar7 <= uVar9)" ( (binary_expression "uVar7 <= uVar9" identifier <= identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) })) (expression_statement "uVar3 = *puVar8;" (assignment_expression "uVar3 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "uVar2 = (info->source_file)._M_string_length;" (assignment_expression "uVar2 = (info->source_file)._M_string_length" identifier = (field_expression "(info->source_file)._M_string_length" (parenthesized_expression "(info->source_file)" ( (field_expression "info->source_file" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (uVar3 < names_size) {\n      sVar5 = strlen((char *)(local_50 + uVar3));\n      std::string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);\n      goto LAB_001cad63;\n    }" if (parenthesized_expression "(uVar3 < names_size)" ( (binary_expression "uVar3 < names_size" identifier < identifier) )) (compound_statement "{\n      sVar5 = strlen((char *)(local_50 + uVar3));\n      std::string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);\n      goto LAB_001cad63;\n    }" { (expression_statement "sVar5 = strlen((char *)(local_50 + uVar3));" (assignment_expression "sVar5 = strlen((char *)(local_50 + uVar3))" identifier = (call_expression "strlen((char *)(local_50 + uVar3))" identifier (argument_list "((char *)(local_50 + uVar3))" ( (cast_expression "(char *)(local_50 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + uVar3)" ( (binary_expression "local_50 + uVar3" identifier + identifier) ))) )))) ;) (labeled_statement "std::string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5);" (call_expression "_M_replace((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5)" identifier (argument_list "((string *)info,0,uVar2,(char *)(local_50 + uVar3),sVar5)" ( (cast_expression "(string *)info" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , identifier , (cast_expression "(char *)(local_50 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + uVar3)" ( (binary_expression "local_50 + uVar3" identifier + identifier) ))) , identifier ))) ;))) (goto_statement "goto LAB_001cad63;" goto statement_identifier ;) })) (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + 6;" (assignment_expression "puVar8 = puVar8 + 6" identifier = (binary_expression "puVar8 + 6" identifier + number_literal)) ;) (labeled_statement "std::string::_M_replace((string *)info,0,uVar2,"(invalid)",9);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)info,0,uVar2,"(invalid)",9);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)info,0,uVar2,"(invalid)",9);" (call_expression "_M_replace((string *)info,0,uVar2,"(invalid)",9)" identifier (argument_list "((string *)info,0,uVar2,"(invalid)",9)" ( (cast_expression "(string *)info" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , identifier , (string_literal ""(invalid)"" " string_content ") , number_literal ))) ;))) (if_statement "if (uVar7 <= uVar9) {\n      return false;\n    }" if (parenthesized_expression "(uVar7 <= uVar9)" ( (binary_expression "uVar7 <= uVar9" identifier <= identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit "char FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)\n\n{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}\n\n" (function_definition "char FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)\n\n{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)" identifier (parameter_list "(long *param_1,uint param_2,long param_3,long param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "undefined1 auVar11 [16];" type_identifier (array_declarator "auVar11 [16]" identifier [ number_literal ]) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "ulong local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "iVar2 = *(int *)((long)param_1 + 0x11c);" (assignment_expression "iVar2 = *(int *)((long)param_1 + 0x11c)" identifier = (pointer_expression "*(int *)((long)param_1 + 0x11c)" * (cast_expression "(int *)((long)param_1 + 0x11c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x11c)" ( (binary_expression "(long)param_1 + 0x11c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n    return '\0';\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return '\0';\n  }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) (if_statement "if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x70) == FUN_001ca450)" ( (binary_expression "*(code **)(*param_1 + 0x70) == FUN_001ca450" (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }" { (expression_statement "puVar9 = (uint *)((long)&DAT_003799a6 + 1);" (assignment_expression "puVar9 = (uint *)((long)&DAT_003799a6 + 1)" identifier = (cast_expression "(uint *)((long)&DAT_003799a6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&DAT_003799a6 + 1)" ( (binary_expression "(long)&DAT_003799a6 + 1" (cast_expression "(long)&DAT_003799a6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&DAT_003799a6" & identifier)) + number_literal) )))) ;) (expression_statement "auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);" (assignment_expression "auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2)" identifier = (call_expression "FUN_001ca3b0(param_1 + 0x1f,iVar2)" identifier (argument_list "(param_1 + 0x1f,iVar2)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) , identifier )))) ;) (expression_statement "local_48 = auVar11._8_8_;" (assignment_expression "local_48 = auVar11._8_8_" identifier = (field_expression "auVar11._8_8_" identifier . field_identifier)) ;) (if_statement "if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }" { (if_statement "if (param_1[5] == 0) goto LAB_001caff0;" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001caff0;" goto statement_identifier ;)) (expression_statement "puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);" (assignment_expression "puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" identifier = (cast_expression "(uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" identifier (argument_list "(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" ( (binary_expression "param_1[5] + 0x28" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[6]" identifier [ number_literal ]) , (field_expression "auVar11._0_8_" identifier . field_identifier) , identifier , number_literal , number_literal ))))) ;) })) }) (else_clause "else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" else (compound_statement "{\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" { (expression_statement "puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);" (assignment_expression "puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" identifier = (cast_expression "(uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" (parenthesized_expression "(**(code **)(*param_1 + 0x70))" ( (pointer_expression "**(code **)(*param_1 + 0x70)" * (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,iVar2,&local_48,0)" ( identifier , identifier , (pointer_expression "&local_48" & identifier) , number_literal ))))) ;) }))) (if_statement "if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0xa8) == FUN_001cac40)" ( (binary_expression "*(code **)(*param_1 + 0xa8) == FUN_001cac40" (pointer_expression "*(code **)(*param_1 + 0xa8)" * (cast_expression "(code **)(*param_1 + 0xa8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xa8)" ( (binary_expression "*param_1 + 0xa8" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }" { (expression_statement "uVar4 = FUN_001caba0(param_1 + 0x1f);" (assignment_expression "uVar4 = FUN_001caba0(param_1 + 0x1f)" identifier = (call_expression "FUN_001caba0(param_1 + 0x1f)" identifier (argument_list "(param_1 + 0x1f)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) )))) ;) }) (else_clause "else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" else (compound_statement "{\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" { (expression_statement "uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));" (assignment_expression "uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c))" identifier = (call_expression "(**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c))" (parenthesized_expression "(**(code **)(*param_1 + 0xa8))" ( (pointer_expression "**(code **)(*param_1 + 0xa8)" * (pointer_expression "*(code **)(*param_1 + 0xa8)" * (cast_expression "(code **)(*param_1 + 0xa8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xa8)" ( (binary_expression "*param_1 + 0xa8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,*(undefined4 *)((long)param_1 + 0x11c))" ( identifier , (pointer_expression "*(undefined4 *)((long)param_1 + 0x11c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x11c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x11c)" ( (binary_expression "(long)param_1 + 0x11c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) }))) (if_statement "if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" if (parenthesized_expression "(uVar4 < 0xff00)" ( (binary_expression "uVar4 < 0xff00" identifier < number_literal) )) (compound_statement "{\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }" { (expression_statement "pcVar6 = *(code **)(*param_1 + 0x70);" (assignment_expression "pcVar6 = *(code **)(*param_1 + 0x70)" identifier = (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }" if (parenthesized_expression "(pcVar6 == FUN_001ca450)" ( (binary_expression "pcVar6 == FUN_001ca450" identifier == identifier) )) (compound_statement "{\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }" { (labeled_statement "LAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);" statement_identifier : (expression_statement "auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);" (assignment_expression "auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4)" identifier = (call_expression "FUN_001ca3b0(param_1 + 0x1f,uVar4)" identifier (argument_list "(param_1 + 0x1f,uVar4)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) , identifier )))) ;)) (expression_statement "local_40[0] = auVar11._8_8_;" (assignment_expression "local_40[0] = auVar11._8_8_" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (field_expression "auVar11._8_8_" identifier . field_identifier)) ;) (expression_statement "local_50 = 0x3799a7;" (assignment_expression "local_50 = 0x3799a7" identifier = number_literal) ;) (if_statement "if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }" if (parenthesized_expression "(local_40[0] != 0)" ( (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }" { (if_statement "if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }" if (parenthesized_expression "(param_1[5] == 0)" ( (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }" { (labeled_statement "LAB_001caff0:\n                    \n          FUN_001bcf60();" statement_identifier : (expression_statement "FUN_001bcf60();" (call_expression "FUN_001bcf60()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);" (assignment_expression "local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" identifier = (call_expression "FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" identifier (argument_list "(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" ( (binary_expression "param_1[5] + 0x28" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) , (subscript_expression "param_1[6]" identifier [ number_literal ]) , (field_expression "auVar11._0_8_" identifier . field_identifier) , (subscript_expression "local_40[0]" identifier [ number_literal ]) , number_literal , number_literal )))) ;) })) (goto_statement "goto LAB_001cad29;" goto statement_identifier ;) })) }) (else_clause "else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" else (compound_statement "{\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" { (expression_statement "FUN_001682d0(param_1 + 0x1f);" (call_expression "FUN_001682d0(param_1 + 0x1f)" identifier (argument_list "(param_1 + 0x1f)" ( (binary_expression "param_1 + 0x1f" identifier + number_literal) ))) ;) (expression_statement "uVar4 = uVar4 + (int)param_1[0x22];" (assignment_expression "uVar4 = uVar4 + (int)param_1[0x22]" identifier = (binary_expression "uVar4 + (int)param_1[0x22]" identifier + (cast_expression "(int)param_1[0x22]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x22]" identifier [ number_literal ])))) ;) (expression_statement "pcVar6 = *(code **)(*param_1 + 0x70);" (assignment_expression "pcVar6 = *(code **)(*param_1 + 0x70)" identifier = (pointer_expression "*(code **)(*param_1 + 0x70)" * (cast_expression "(code **)(*param_1 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x70)" ( (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar6 == FUN_001ca450) goto LAB_001cad00;" if (parenthesized_expression "(pcVar6 == FUN_001ca450)" ( (binary_expression "pcVar6 == FUN_001ca450" identifier == identifier) )) (goto_statement "goto LAB_001cad00;" goto statement_identifier ;)) }))) (expression_statement "local_50 = (*pcVar6)(param_1,uVar4,local_40,0);" (assignment_expression "local_50 = (*pcVar6)(param_1,uVar4,local_40,0)" identifier = (call_expression "(*pcVar6)(param_1,uVar4,local_40,0)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,uVar4,local_40,0)" ( identifier , identifier , identifier , number_literal )))) ;) (labeled_statement "LAB_001cad29:\n  uVar8 = local_48 / 0x18;" statement_identifier : (expression_statement "uVar8 = local_48 / 0x18;" (assignment_expression "uVar8 = local_48 / 0x18" identifier = (binary_expression "local_48 / 0x18" identifier / number_literal)) ;)) (if_statement "if (local_48 < 0x18) {\n    return '\0';\n  }" if (parenthesized_expression "(local_48 < 0x18)" ( (binary_expression "local_48 < 0x18" identifier < number_literal) )) (compound_statement "{\n    return '\0';\n  }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );" do (compound_statement "{\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  }" { (while_statement "while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }" while (parenthesized_expression "((puVar9[1] & 0xf) != 4)" ( (binary_expression "(puVar9[1] & 0xf) != 4" (parenthesized_expression "(puVar9[1] & 0xf)" ( (binary_expression "puVar9[1] & 0xf" (subscript_expression "puVar9[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }" { (expression_statement "uVar4 = (uint)*(ushort *)((long)puVar9 + 6);" (assignment_expression "uVar4 = (uint)*(ushort *)((long)puVar9 + 6)" identifier = (binary_expression "(uint)*(ushort *)((long)puVar9 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)((long)puVar9 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 6)" ( (binary_expression "(long)puVar9 + 6" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }" if (parenthesized_expression "(0xfeff < uVar4)" ( (binary_expression "0xfeff < uVar4" number_literal < identifier) )) (compound_statement "{\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }" { (if_statement "if (uVar4 != 0xffff) goto LAB_001cad63;" if (parenthesized_expression "(uVar4 != 0xffff)" ( (binary_expression "uVar4 != 0xffff" identifier != number_literal) )) (goto_statement "goto LAB_001cad63;" goto statement_identifier ;)) (expression_statement "lVar7 = param_1[8];" (assignment_expression "lVar7 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (if_statement "if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }" { (expression_statement "lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);" (assignment_expression "lVar7 = (**(code **)(*param_1 + 0xd8))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0xd8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xd8))" ( (pointer_expression "**(code **)(*param_1 + 0xd8)" * (pointer_expression "*(code **)(*param_1 + 0xd8)" * (cast_expression "(code **)(*param_1 + 0xd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xd8)" ( (binary_expression "*param_1 + 0xd8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_1[8] = lVar7;" (assignment_expression "param_1[8] = lVar7" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);" (assignment_expression "uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff)" identifier = (call_expression "FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff)" identifier (argument_list "(lVar7,param_1,uVar10 & 0xffffffff)" ( identifier , identifier , (binary_expression "uVar10 & 0xffffffff" identifier & number_literal) )))) ;) })) (if_statement "if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" if (parenthesized_expression "(((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)))" ( (binary_expression "((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))" (parenthesized_expression "((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3))" ( (binary_expression "(param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)" (parenthesized_expression "(param_2 == uVar4)" ( (binary_expression "param_2 == uVar4" identifier == identifier) )) && (parenthesized_expression "(*(long *)(puVar9 + 2) <= param_3)" ( (binary_expression "*(long *)(puVar9 + 2) <= param_3" (pointer_expression "*(long *)(puVar9 + 2)" * (cast_expression "(long *)(puVar9 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) <= identifier) ))) )) && (parenthesized_expression "(param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))" ( (binary_expression "param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)" identifier < (binary_expression "*(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)" (pointer_expression "*(long *)(puVar9 + 2)" * (cast_expression "(long *)(puVar9 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) + (pointer_expression "*(long *)(puVar9 + 4)" * (cast_expression "(long *)(puVar9 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))))) ))) )) (compound_statement "{\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" { (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "lVar7 = param_4 + 0x20;" (assignment_expression "lVar7 = param_4 + 0x20" identifier = (binary_expression "param_4 + 0x20" identifier + number_literal)) ;) (expression_statement "*(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;" (assignment_expression "*(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf" (pointer_expression "*(uint *)(param_4 + 0x40)" * (cast_expression "(uint *)(param_4 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x40)" ( (binary_expression "param_4 + 0x40" identifier + number_literal) )))) = (binary_expression "(byte)puVar9[1] & 0xf" (cast_expression "(byte)puVar9[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[1]" identifier [ number_literal ])) & number_literal)) ;) (if_statement "if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }" if (parenthesized_expression "(local_40[0] < uVar4)" ( (binary_expression "local_40[0] < uVar4" (subscript_expression "local_40[0]" identifier [ number_literal ]) < identifier) )) (compound_statement "{\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }" { (expression_statement "FUN_002e2900(lVar7,"(invalid)");" (call_expression "FUN_002e2900(lVar7,"(invalid)")" identifier (argument_list "(lVar7,"(invalid)")" ( identifier , (string_literal ""(invalid)"" " string_content ") ))) ;) (return_statement "return '\x01';" return (char_literal "'\x01'" ' escape_sequence ') ;) })) (expression_statement "FUN_002e2900(lVar7,(ulong)uVar4 + local_50);" (call_expression "FUN_002e2900(lVar7,(ulong)uVar4 + local_50)" identifier (argument_list "(lVar7,(ulong)uVar4 + local_50)" ( identifier , (binary_expression "(ulong)uVar4 + local_50" (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }" { (expression_statement "cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);" (assignment_expression "cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" identifier = (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }" if (parenthesized_expression "((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             )" ( (binary_expression "(cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)" (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)" ( (comma_expression "__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0" (assignment_expression "__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" identifier = (cast_expression "(void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" identifier (argument_list "(*(undefined8 *)(param_4 + 0x20),3)" ( (pointer_expression "*(undefined8 *)(param_4 + 0x20)" * (cast_expression "(undefined8 *)(param_4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x20)" ( (binary_expression "param_4 + 0x20" identifier + number_literal) )))) , number_literal ))))) , (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }" { (expression_statement "FUN_002e2900(lVar7,__ptr);" (call_expression "FUN_002e2900(lVar7,__ptr)" identifier (argument_list "(lVar7,__ptr)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return cVar1;" return identifier ;) })) (return_statement "return '\x01';" return (char_literal "'\x01'" ' escape_sequence ') ;) })) (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (labeled_statement "LAB_001cad63:\n      uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "puVar9 = puVar9 + 6;" (assignment_expression "puVar9 = puVar9 + 6" identifier = (binary_expression "puVar9 + 6" identifier + number_literal)) ;) (if_statement "if (uVar8 <= uVar10) {\n        return '\0';\n      }" if (parenthesized_expression "(uVar8 <= uVar10)" ( (binary_expression "uVar8 <= uVar10" identifier <= identifier) )) (compound_statement "{\n        return '\0';\n      }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) })) (expression_statement "uVar3 = *(undefined8 *)(param_4 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_4 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_4 + 8)" * (cast_expression "(undefined8 *)(param_4 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }" if (parenthesized_expression "(*puVar9 < local_40[0])" ( (binary_expression "*puVar9 < local_40[0]" (pointer_expression "*puVar9" * identifier) < (subscript_expression "local_40[0]" identifier [ number_literal ])) )) (compound_statement "{\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }" { (expression_statement "__s = (char *)((ulong)*puVar9 + local_50);" (assignment_expression "__s = (char *)((ulong)*puVar9 + local_50)" identifier = (cast_expression "(char *)((ulong)*puVar9 + local_50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)*puVar9 + local_50)" ( (binary_expression "(ulong)*puVar9 + local_50" (binary_expression "(ulong)*puVar9" (parenthesized_expression "(ulong)" ( identifier )) * identifier) + identifier) )))) ;) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "FUN_002e25a0(param_4,0,uVar3,__s,sVar5);" (call_expression "FUN_002e25a0(param_4,0,uVar3,__s,sVar5)" identifier (argument_list "(param_4,0,uVar3,__s,sVar5)" ( identifier , number_literal , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_001cad63;" goto statement_identifier ;) })) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 6;" (assignment_expression "puVar9 = puVar9 + 6" identifier = (binary_expression "puVar9 + 6" identifier + number_literal)) ;) (expression_statement "FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);" (call_expression "FUN_002e25a0(param_4,0,uVar3,"(invalid)",9)" identifier (argument_list "(param_4,0,uVar3,"(invalid)",9)" ( identifier , number_literal , identifier , (string_literal ""(invalid)"" " string_content ") , number_literal ))) ;) (if_statement "if (uVar8 <= uVar10) {\n      return '\0';\n    }" if (parenthesized_expression "(uVar8 <= uVar10)" ( (binary_expression "uVar8 <= uVar10" identifier <= identifier) )) (compound_statement "{\n      return '\0';\n    }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (char_literal ' escape_sequence ') ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (subscript_expression IDENT [ LIT ]) , (field_expression IDENT . field_identifier) , IDENT , LIT , LIT ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (subscript_expression IDENT [ LIT ]) , (field_expression IDENT . field_identifier) , (subscript_expression IDENT [ LIT ]) , LIT , LIT )))) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , LIT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT / LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (char_literal ' escape_sequence ') ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT & LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) ))) )) && (parenthesized_expression ( (binary_expression IDENT < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) (return_statement return (char_literal ' escape_sequence ') ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) (return_statement return (char_literal ' escape_sequence ') ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return (char_literal ' escape_sequence ') ;) })) })) (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 (pointer_expression * IDENT) < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , (string_literal " string_content ") , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return (char_literal ' escape_sequence ') ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "char FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)\n\n{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}" (primitive_type "char") (function_declarator "FUN_001cac50(long *param_1,uint param_2,long param_3,long param_4)" (identifier "FUN_001cac50") (parameter_list "(long *param_1,uint param_2,long param_3,long param_4)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  undefined8 uVar3;\n  uint uVar4;\n  size_t sVar5;\n  code *pcVar6;\n  long lVar7;\n  void *__ptr;\n  char *__s;\n  ulong uVar8;\n  uint *puVar9;\n  ulong uVar10;\n  undefined1 auVar11 [16];\n  long local_50;\n  ulong local_48;\n  ulong local_40 [2];\n  \n  iVar2 = *(int *)((long)param_1 + 0x11c);\n  if (iVar2 == 0) {\n    return '\0';\n  }\n  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }\n  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }\n  if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }\n  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);\nLAB_001cad29:\n  uVar8 = local_48 / 0x18;\n  if (local_48 < 0x18) {\n    return '\0';\n  }\n  uVar10 = 0;\n  do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "undefined1 auVar11 [16];" (type_identifier "undefined1") (array_declarator "auVar11 [16]" (identifier "auVar11") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "ulong local_48;" (type_identifier "ulong") (identifier "local_48") (; ";")) (declaration "ulong local_40 [2];" (type_identifier "ulong") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "iVar2 = *(int *)((long)param_1 + 0x11c);" (assignment_expression "iVar2 = *(int *)((long)param_1 + 0x11c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)((long)param_1 + 0x11c)" (* "*") (cast_expression "(int *)((long)param_1 + 0x11c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x11c)" (( "(") (binary_expression "(long)param_1 + 0x11c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x11c")) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0) {\n    return '\0';\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return '\0';\n  }" ({ "{") (return_statement "return '\0';" (return "return") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")) (; ";")) (} "}"))) (if_statement "if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }\n  else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x70) == FUN_001ca450)" (( "(") (binary_expression "*(code **)(*param_1 + 0x70) == FUN_001ca450" (pointer_expression "*(code **)(*param_1 + 0x70)" (* "*") (cast_expression "(code **)(*param_1 + 0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x70)" (( "(") (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x70")) () ")")))) (== "==") (identifier "FUN_001ca450")) () ")")) (compound_statement "{\n    puVar9 = (uint *)((long)&DAT_003799a6 + 1);\n    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);\n    local_48 = auVar11._8_8_;\n    if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }\n  }" ({ "{") (expression_statement "puVar9 = (uint *)((long)&DAT_003799a6 + 1);" (assignment_expression "puVar9 = (uint *)((long)&DAT_003799a6 + 1)" (identifier "puVar9") (= "=") (cast_expression "(uint *)((long)&DAT_003799a6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&DAT_003799a6 + 1)" (( "(") (binary_expression "(long)&DAT_003799a6 + 1" (cast_expression "(long)&DAT_003799a6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&DAT_003799a6" (& "&") (identifier "DAT_003799a6"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);" (assignment_expression "auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2)" (identifier "auVar11") (= "=") (call_expression "FUN_001ca3b0(param_1 + 0x1f,iVar2)" (identifier "FUN_001ca3b0") (argument_list "(param_1 + 0x1f,iVar2)" (( "(") (binary_expression "param_1 + 0x1f" (identifier "param_1") (+ "+") (number_literal "0x1f")) (, ",") (identifier "iVar2") () ")")))) (; ";")) (expression_statement "local_48 = auVar11._8_8_;" (assignment_expression "local_48 = auVar11._8_8_" (identifier "local_48") (= "=") (field_expression "auVar11._8_8_" (identifier "auVar11") (. ".") (field_identifier "_8_8_"))) (; ";")) (if_statement "if (local_48 != 0) {\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_1[5] == 0) goto LAB_001caff0;\n      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);\n    }" ({ "{") (if_statement "if (param_1[5] == 0) goto LAB_001caff0;" (if "if") (parenthesized_expression "(param_1[5] == 0)" (( "(") (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001caff0;" (goto "goto") (statement_identifier "LAB_001caff0") (; ";"))) (expression_statement "puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);" (assignment_expression "puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" (identifier "puVar9") (= "=") (cast_expression "(uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" (identifier "FUN_0017b1d0") (argument_list "(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0)" (( "(") (binary_expression "param_1[5] + 0x28" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x28")) (, ",") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (, ",") (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (, ",") (identifier "local_48") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" (else "else") (compound_statement "{\n    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);\n  }" ({ "{") (expression_statement "puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);" (assignment_expression "puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" (identifier "puVar9") (= "=") (cast_expression "(uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0)" (parenthesized_expression "(**(code **)(*param_1 + 0x70))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x70)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x70)" (* "*") (cast_expression "(code **)(*param_1 + 0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x70)" (( "(") (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (argument_list "(param_1,iVar2,&local_48,0)" (( "(") (identifier "param_1") (, ",") (identifier "iVar2") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}")))) (if_statement "if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0xa8) == FUN_001cac40)" (( "(") (binary_expression "*(code **)(*param_1 + 0xa8) == FUN_001cac40" (pointer_expression "*(code **)(*param_1 + 0xa8)" (* "*") (cast_expression "(code **)(*param_1 + 0xa8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xa8)" (( "(") (binary_expression "*param_1 + 0xa8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xa8")) () ")")))) (== "==") (identifier "FUN_001cac40")) () ")")) (compound_statement "{\n    uVar4 = FUN_001caba0(param_1 + 0x1f);\n  }" ({ "{") (expression_statement "uVar4 = FUN_001caba0(param_1 + 0x1f);" (assignment_expression "uVar4 = FUN_001caba0(param_1 + 0x1f)" (identifier "uVar4") (= "=") (call_expression "FUN_001caba0(param_1 + 0x1f)" (identifier "FUN_001caba0") (argument_list "(param_1 + 0x1f)" (( "(") (binary_expression "param_1 + 0x1f" (identifier "param_1") (+ "+") (number_literal "0x1f")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" (else "else") (compound_statement "{\n    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));\n  }" ({ "{") (expression_statement "uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));" (assignment_expression "uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c))" (identifier "uVar4") (= "=") (call_expression "(**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c))" (parenthesized_expression "(**(code **)(*param_1 + 0xa8))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xa8)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xa8)" (* "*") (cast_expression "(code **)(*param_1 + 0xa8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xa8)" (( "(") (binary_expression "*param_1 + 0xa8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xa8")) () ")"))))) () ")")) (argument_list "(param_1,*(undefined4 *)((long)param_1 + 0x11c))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)((long)param_1 + 0x11c)" (* "*") (cast_expression "(undefined4 *)((long)param_1 + 0x11c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x11c)" (( "(") (binary_expression "(long)param_1 + 0x11c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x11c")) () ")")))) () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar4 < 0xff00) {\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }\n  else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" (if "if") (parenthesized_expression "(uVar4 < 0xff00)" (( "(") (binary_expression "uVar4 < 0xff00" (identifier "uVar4") (< "<") (number_literal "0xff00")) () ")")) (compound_statement "{\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }\n  }" ({ "{") (expression_statement "pcVar6 = *(code **)(*param_1 + 0x70);" (assignment_expression "pcVar6 = *(code **)(*param_1 + 0x70)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)(*param_1 + 0x70)" (* "*") (cast_expression "(code **)(*param_1 + 0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x70)" (( "(") (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (pcVar6 == FUN_001ca450) {\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }" (if "if") (parenthesized_expression "(pcVar6 == FUN_001ca450)" (( "(") (binary_expression "pcVar6 == FUN_001ca450" (identifier "pcVar6") (== "==") (identifier "FUN_001ca450")) () ")")) (compound_statement "{\nLAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);\n      local_40[0] = auVar11._8_8_;\n      local_50 = 0x3799a7;\n      if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }\n      goto LAB_001cad29;\n    }" ({ "{") (labeled_statement "LAB_001cad00:\n      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);" (statement_identifier "LAB_001cad00") (: ":") (expression_statement "auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);" (assignment_expression "auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4)" (identifier "auVar11") (= "=") (call_expression "FUN_001ca3b0(param_1 + 0x1f,uVar4)" (identifier "FUN_001ca3b0") (argument_list "(param_1 + 0x1f,uVar4)" (( "(") (binary_expression "param_1 + 0x1f" (identifier "param_1") (+ "+") (number_literal "0x1f")) (, ",") (identifier "uVar4") () ")")))) (; ";"))) (expression_statement "local_40[0] = auVar11._8_8_;" (assignment_expression "local_40[0] = auVar11._8_8_" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (field_expression "auVar11._8_8_" (identifier "auVar11") (. ".") (field_identifier "_8_8_"))) (; ";")) (expression_statement "local_50 = 0x3799a7;" (assignment_expression "local_50 = 0x3799a7" (identifier "local_50") (= "=") (number_literal "0x3799a7")) (; ";")) (if_statement "if (local_40[0] != 0) {\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }" (if "if") (parenthesized_expression "(local_40[0] != 0)" (( "(") (binary_expression "local_40[0] != 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }\n        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);\n      }" ({ "{") (if_statement "if (param_1[5] == 0) {\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }" (if "if") (parenthesized_expression "(param_1[5] == 0)" (( "(") (binary_expression "param_1[5] == 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001caff0:\n                    \n          FUN_001bcf60();\n        }" ({ "{") (labeled_statement "LAB_001caff0:\n                    \n          FUN_001bcf60();" (statement_identifier "LAB_001caff0") (: ":") (expression_statement "FUN_001bcf60();" (call_expression "FUN_001bcf60()" (identifier "FUN_001bcf60") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);" (assignment_expression "local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" (identifier "local_50") (= "=") (call_expression "FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" (identifier "FUN_0017b1d0") (argument_list "(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0)" (( "(") (binary_expression "param_1[5] + 0x28" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x28")) (, ",") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (, ",") (field_expression "auVar11._0_8_" (identifier "auVar11") (. ".") (field_identifier "_0_8_")) (, ",") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (, ",") (number_literal "1") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}"))) (goto_statement "goto LAB_001cad29;" (goto "goto") (statement_identifier "LAB_001cad29") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" (else "else") (compound_statement "{\n    FUN_001682d0(param_1 + 0x1f);\n    uVar4 = uVar4 + (int)param_1[0x22];\n    pcVar6 = *(code **)(*param_1 + 0x70);\n    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;\n  }" ({ "{") (expression_statement "FUN_001682d0(param_1 + 0x1f);" (call_expression "FUN_001682d0(param_1 + 0x1f)" (identifier "FUN_001682d0") (argument_list "(param_1 + 0x1f)" (( "(") (binary_expression "param_1 + 0x1f" (identifier "param_1") (+ "+") (number_literal "0x1f")) () ")"))) (; ";")) (expression_statement "uVar4 = uVar4 + (int)param_1[0x22];" (assignment_expression "uVar4 = uVar4 + (int)param_1[0x22]" (identifier "uVar4") (= "=") (binary_expression "uVar4 + (int)param_1[0x22]" (identifier "uVar4") (+ "+") (cast_expression "(int)param_1[0x22]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x22]" (identifier "param_1") ([ "[") (number_literal "0x22") (] "]"))))) (; ";")) (expression_statement "pcVar6 = *(code **)(*param_1 + 0x70);" (assignment_expression "pcVar6 = *(code **)(*param_1 + 0x70)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)(*param_1 + 0x70)" (* "*") (cast_expression "(code **)(*param_1 + 0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x70)" (( "(") (binary_expression "*param_1 + 0x70" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if (pcVar6 == FUN_001ca450) goto LAB_001cad00;" (if "if") (parenthesized_expression "(pcVar6 == FUN_001ca450)" (( "(") (binary_expression "pcVar6 == FUN_001ca450" (identifier "pcVar6") (== "==") (identifier "FUN_001ca450")) () ")")) (goto_statement "goto LAB_001cad00;" (goto "goto") (statement_identifier "LAB_001cad00") (; ";"))) (} "}")))) (expression_statement "local_50 = (*pcVar6)(param_1,uVar4,local_40,0);" (assignment_expression "local_50 = (*pcVar6)(param_1,uVar4,local_40,0)" (identifier "local_50") (= "=") (call_expression "(*pcVar6)(param_1,uVar4,local_40,0)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_1,uVar4,local_40,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") (, ",") (identifier "local_40") (, ",") (number_literal "0") () ")")))) (; ";")) (labeled_statement "LAB_001cad29:\n  uVar8 = local_48 / 0x18;" (statement_identifier "LAB_001cad29") (: ":") (expression_statement "uVar8 = local_48 / 0x18;" (assignment_expression "uVar8 = local_48 / 0x18" (identifier "uVar8") (= "=") (binary_expression "local_48 / 0x18" (identifier "local_48") (/ "/") (number_literal "0x18"))) (; ";"))) (if_statement "if (local_48 < 0x18) {\n    return '\0';\n  }" (if "if") (parenthesized_expression "(local_48 < 0x18)" (( "(") (binary_expression "local_48 < 0x18" (identifier "local_48") (< "<") (number_literal "0x18")) () ")")) (compound_statement "{\n    return '\0';\n  }" ({ "{") (return_statement "return '\0';" (return "return") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")) (; ";")) (} "}"))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  } while( true );" (do "do") (compound_statement "{\n    while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }\n    uVar3 = *(undefined8 *)(param_4 + 8);\n    if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }\n    uVar10 = uVar10 + 1;\n    puVar9 = puVar9 + 6;\n    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);\n    if (uVar8 <= uVar10) {\n      return '\0';\n    }\n  }" ({ "{") (while_statement "while ((puVar9[1] & 0xf) != 4) {\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }" (while "while") (parenthesized_expression "((puVar9[1] & 0xf) != 4)" (( "(") (binary_expression "(puVar9[1] & 0xf) != 4" (parenthesized_expression "(puVar9[1] & 0xf)" (( "(") (binary_expression "puVar9[1] & 0xf" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xf")) () ")")) (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);\n      if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }\n      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }\nLAB_001cad63:\n      uVar10 = uVar10 + 1;\n      puVar9 = puVar9 + 6;\n      if (uVar8 <= uVar10) {\n        return '\0';\n      }\n    }" ({ "{") (expression_statement "uVar4 = (uint)*(ushort *)((long)puVar9 + 6);" (assignment_expression "uVar4 = (uint)*(ushort *)((long)puVar9 + 6)" (identifier "uVar4") (= "=") (binary_expression "(uint)*(ushort *)((long)puVar9 + 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)((long)puVar9 + 6)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 6)" (( "(") (binary_expression "(long)puVar9 + 6" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "6")) () ")"))))) (; ";")) (if_statement "if (0xfeff < uVar4) {\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }" (if "if") (parenthesized_expression "(0xfeff < uVar4)" (( "(") (binary_expression "0xfeff < uVar4" (number_literal "0xfeff") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n        if (uVar4 != 0xffff) goto LAB_001cad63;\n        lVar7 = param_1[8];\n        if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }\n        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);\n      }" ({ "{") (if_statement "if (uVar4 != 0xffff) goto LAB_001cad63;" (if "if") (parenthesized_expression "(uVar4 != 0xffff)" (( "(") (binary_expression "uVar4 != 0xffff" (identifier "uVar4") (!= "!=") (number_literal "0xffff")) () ")")) (goto_statement "goto LAB_001cad63;" (goto "goto") (statement_identifier "LAB_001cad63") (; ";"))) (expression_statement "lVar7 = param_1[8];" (assignment_expression "lVar7 = param_1[8]" (identifier "lVar7") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (if_statement "if (lVar7 == 0) {\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);\n          param_1[8] = lVar7;\n        }" ({ "{") (expression_statement "lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);" (assignment_expression "lVar7 = (**(code **)(*param_1 + 0xd8))(param_1)" (identifier "lVar7") (= "=") (call_expression "(**(code **)(*param_1 + 0xd8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xd8))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xd8)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xd8)" (* "*") (cast_expression "(code **)(*param_1 + 0xd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xd8)" (( "(") (binary_expression "*param_1 + 0xd8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xd8")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "param_1[8] = lVar7;" (assignment_expression "param_1[8] = lVar7" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "lVar7")) (; ";")) (} "}"))) (expression_statement "uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);" (assignment_expression "uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff)" (identifier "uVar4") (= "=") (call_expression "FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff)" (identifier "FUN_001bd230") (argument_list "(lVar7,param_1,uVar10 & 0xffffffff)" (( "(") (identifier "lVar7") (, ",") (identifier "param_1") (, ",") (binary_expression "uVar10 & 0xffffffff" (identifier "uVar10") (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (} "}"))) (if_statement "if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" (if "if") (parenthesized_expression "(((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)))" (( "(") (binary_expression "((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&\n         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))" (parenthesized_expression "((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3))" (( "(") (binary_expression "(param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)" (parenthesized_expression "(param_2 == uVar4)" (( "(") (binary_expression "param_2 == uVar4" (identifier "param_2") (== "==") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(puVar9 + 2) <= param_3)" (( "(") (binary_expression "*(long *)(puVar9 + 2) <= param_3" (pointer_expression "*(long *)(puVar9 + 2)" (* "*") (cast_expression "(long *)(puVar9 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 2)" (( "(") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2")) () ")")))) (<= "<=") (identifier "param_3")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))" (( "(") (binary_expression "param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)" (identifier "param_3") (< "<") (binary_expression "*(long *)(puVar9 + 2) + *(long *)(puVar9 + 4)" (pointer_expression "*(long *)(puVar9 + 2)" (* "*") (cast_expression "(long *)(puVar9 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 2)" (( "(") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2")) () ")")))) (+ "+") (pointer_expression "*(long *)(puVar9 + 4)" (* "*") (cast_expression "(long *)(puVar9 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n        uVar4 = *puVar9;\n        lVar7 = param_4 + 0x20;\n        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;\n        if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }\n        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);\n        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }\n                    \n        FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n      }" ({ "{") (expression_statement "uVar4 = *puVar9;" (assignment_expression "uVar4 = *puVar9" (identifier "uVar4") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "lVar7 = param_4 + 0x20;" (assignment_expression "lVar7 = param_4 + 0x20" (identifier "lVar7") (= "=") (binary_expression "param_4 + 0x20" (identifier "param_4") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "*(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;" (assignment_expression "*(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf" (pointer_expression "*(uint *)(param_4 + 0x40)" (* "*") (cast_expression "(uint *)(param_4 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x40)" (( "(") (binary_expression "param_4 + 0x40" (identifier "param_4") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (binary_expression "(byte)puVar9[1] & 0xf" (cast_expression "(byte)puVar9[1]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]"))) (& "&") (number_literal "0xf"))) (; ";")) (if_statement "if (local_40[0] < uVar4) {\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }" (if "if") (parenthesized_expression "(local_40[0] < uVar4)" (( "(") (binary_expression "local_40[0] < uVar4" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n          FUN_002e2900(lVar7,"(invalid)");\n          return '\x01';\n        }" ({ "{") (expression_statement "FUN_002e2900(lVar7,"(invalid)");" (call_expression "FUN_002e2900(lVar7,"(invalid)")" (identifier "FUN_002e2900") (argument_list "(lVar7,"(invalid)")" (( "(") (identifier "lVar7") (, ",") (string_literal ""(invalid)"" (" """) (string_content "(invalid)") (" """)) () ")"))) (; ";")) (return_statement "return '\x01';" (return "return") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")) (; ";")) (} "}"))) (expression_statement "FUN_002e2900(lVar7,(ulong)uVar4 + local_50);" (call_expression "FUN_002e2900(lVar7,(ulong)uVar4 + local_50)" (identifier "FUN_002e2900") (argument_list "(lVar7,(ulong)uVar4 + local_50)" (( "(") (identifier "lVar7") (, ",") (binary_expression "(ulong)uVar4 + local_50" (cast_expression "(ulong)uVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar4")) (+ "+") (identifier "local_50")) () ")"))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);\n          if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }\n          return '\x01';\n        }" ({ "{") (expression_statement "cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);" (assignment_expression "cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x9055")) () ")"))))) (; ";")) (if_statement "if ((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             ) {\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }" (if "if") (parenthesized_expression "((cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)\n             )" (( "(") (binary_expression "(cVar1 != '\0') &&\n             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)" (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)" (( "(") (comma_expression "__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0" (assignment_expression "__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" (identifier "__ptr") (= "=") (cast_expression "(void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3)" (identifier "FUN_002c3ad0") (argument_list "(*(undefined8 *)(param_4 + 0x20),3)" (( "(") (pointer_expression "*(undefined8 *)(param_4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x20)" (( "(") (binary_expression "param_4 + 0x20" (identifier "param_4") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (number_literal "3") () ")"))))) (, ",") (binary_expression "__ptr != (void *)0x0" (identifier "__ptr") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n            FUN_002e2900(lVar7,__ptr);\n            free(__ptr);\n            return cVar1;\n          }" ({ "{") (expression_statement "FUN_002e2900(lVar7,__ptr);" (call_expression "FUN_002e2900(lVar7,__ptr)" (identifier "FUN_002e2900") (argument_list "(lVar7,__ptr)" (( "(") (identifier "lVar7") (, ",") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return cVar1;" (return "return") (identifier "cVar1") (; ";")) (} "}"))) (return_statement "return '\x01';" (return "return") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")) (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_001cad63:\n      uVar10 = uVar10 + 1;" (statement_identifier "LAB_001cad63") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar9 = puVar9 + 6;" (assignment_expression "puVar9 = puVar9 + 6" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 6" (identifier "puVar9") (+ "+") (number_literal "6"))) (; ";")) (if_statement "if (uVar8 <= uVar10) {\n        return '\0';\n      }" (if "if") (parenthesized_expression "(uVar8 <= uVar10)" (( "(") (binary_expression "uVar8 <= uVar10" (identifier "uVar8") (<= "<=") (identifier "uVar10")) () ")")) (compound_statement "{\n        return '\0';\n      }" ({ "{") (return_statement "return '\0';" (return "return") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = *(undefined8 *)(param_4 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(param_4 + 8)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_4 + 8)" (* "*") (cast_expression "(undefined8 *)(param_4 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (*puVar9 < local_40[0]) {\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }" (if "if") (parenthesized_expression "(*puVar9 < local_40[0])" (( "(") (binary_expression "*puVar9 < local_40[0]" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (< "<") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]"))) () ")")) (compound_statement "{\n      __s = (char *)((ulong)*puVar9 + local_50);\n      sVar5 = strlen(__s);\n      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);\n      goto LAB_001cad63;\n    }" ({ "{") (expression_statement "__s = (char *)((ulong)*puVar9 + local_50);" (assignment_expression "__s = (char *)((ulong)*puVar9 + local_50)" (identifier "__s") (= "=") (cast_expression "(char *)((ulong)*puVar9 + local_50)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)*puVar9 + local_50)" (( "(") (binary_expression "(ulong)*puVar9 + local_50" (binary_expression "(ulong)*puVar9" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "puVar9")) (+ "+") (identifier "local_50")) () ")")))) (; ";")) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" (identifier "sVar5") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "FUN_002e25a0(param_4,0,uVar3,__s,sVar5);" (call_expression "FUN_002e25a0(param_4,0,uVar3,__s,sVar5)" (identifier "FUN_002e25a0") (argument_list "(param_4,0,uVar3,__s,sVar5)" (( "(") (identifier "param_4") (, ",") (number_literal "0") (, ",") (identifier "uVar3") (, ",") (identifier "__s") (, ",") (identifier "sVar5") () ")"))) (; ";")) (goto_statement "goto LAB_001cad63;" (goto "goto") (statement_identifier "LAB_001cad63") (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar9 = puVar9 + 6;" (assignment_expression "puVar9 = puVar9 + 6" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 6" (identifier "puVar9") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);" (call_expression "FUN_002e25a0(param_4,0,uVar3,"(invalid)",9)" (identifier "FUN_002e25a0") (argument_list "(param_4,0,uVar3,"(invalid)",9)" (( "(") (identifier "param_4") (, ",") (number_literal "0") (, ",") (identifier "uVar3") (, ",") (string_literal ""(invalid)"" (" """) (string_content "(invalid)") (" """)) (, ",") (number_literal "9") () ")"))) (; ";")) (if_statement "if (uVar8 <= uVar10) {\n      return '\0';\n    }" (if "if") (parenthesized_expression "(uVar8 <= uVar10)" (( "(") (binary_expression "uVar8 <= uVar10" (identifier "uVar8") (<= "<=") (identifier "uVar10")) () ")")) (compound_statement "{\n      return '\0';\n    }" ({ "{") (return_statement "return '\0';" (return "return") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool get_symbol_location_info(Sized_relobj_file<64,_false> * this, uint
   shndx, off_t offset, Symbol_location_info * info) */

bool __thiscall
gold::Sized_relobj_file<64,_false>::get_symbol_location_info
          (Sized_relobj_file<64,_false> *this,type_3 var_19,off_t var_21,Symbol_location_info *info)

{
  type_13 *this_00;
  bool var_25;
  type_1 uVar2;
  type_2 var_13;
  type_3 var_1;
  int iVar4;
  size_t sVar5;
  type_4 *var_2;
  type_5 extraout_var;
  type_5 extraout_var_00;
  type_5 extraout_var_01;
  char *var_27;
  type_1 var_31;
  type_6 *var_8;
  type_3 *var_20;
  type_1 var_30;
  type_7 LVar10;
  type_8 *var_24;
  type_9 var_7;
  type_9 var_14;
  type_10 *var_17;
  
  var_1 = this->symtab_shndx_;
  if (var_1 == 0) {
    return false;
  }
  var_2 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];
  if (var_2 == var_3) {
    var_20 = (type_3 *)((long)&Sized_relobj_file<64,true>::
                             var_3(unsigned_int,unsigned_long*,bool)::var_4 + 1);
    LVar10 = elfcpp::Elf_file<64,_false,_gold::var_5>::var_6(&this->elf_file_,var_1);
    var_7 = LVar10.data_size;
    if (var_7 != 0) {
      var_8 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;
      if (var_8 == (type_6 *)0x0) goto LAB_001caff0;
      var_20 = (type_3 *)File_read::var_9(&var_8->file_,
                                           (this->super_Sized_relobj<64,_false>).super_Relobj.
                                           super_Object.offset_,LVar10.file_offset,var_7,true
                                           ,false);
    }
  }
  else {
    iVar4 = (*var_2)(this,(type_1)var_1,&var_7,0);
    var_20 = (type_3 *)var_10(extraout_var_01,iVar4);
  }
  var_2 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x15];
  if (var_2 == var_11) {
    var_13 = elfcpp::Elf_file<64,_false,_gold::var_5>::var_12
                         (&this->elf_file_,this->symtab_shndx_);
  }
  else {
    var_13 = (*var_2)(this);
  }
  if (var_13 < 0xff00) {
    var_2 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];
    if (var_2 == var_3) {
LAB_001cad00:
      LVar10 = elfcpp::Elf_file<64,_false,_gold::var_5>::var_6
                         (&this->elf_file_,var_13);
      var_14 = LVar10.data_size;
      var_24 = (type_8 *)((long)&Sized_relobj_file<64,true>::
                                  var_3(unsigned_int,unsigned_long*,bool)::var_4 + 1);
      if (var_14 != 0) {
        var_8 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.input_file_;
        if (var_8 == (type_6 *)0x0) {
LAB_001caff0:
                    /* WARNING: Subroutine does not return */
          Object::var_15((var_5 *)var_8);
        }
        var_24 = File_read::var_9(&var_8->file_,
                                       (this->super_Sized_relobj<64,_false>).super_Relobj.
                                       super_Object.offset_,LVar10.file_offset,var_14,true,false
                                      );
      }
      goto LAB_001cad29;
    }
  }
  else {
    elfcpp::Elf_file<64,_false,_gold::var_5>::var_16(&this->elf_file_);
    var_13 = var_13 + (this->elf_file_).large_shndx_offset_;
    var_2 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0xe];
    if (var_2 == var_3) goto LAB_001cad00;
  }
  iVar4 = (*var_2)(this,(type_1)var_13,&var_14,0);
  var_24 = (type_8 *)var_10(extraout_var,iVar4);
LAB_001cad29:
  var_31 = var_7 / 0x18;
  if (var_7 < 0x18) {
    return false;
  }
  var_30 = 0;
  do {
    while ((var_20[1] & 0xf) != 4) {
      var_1 = (type_3)*(type_11 *)((long)var_20 + 6);
      if (0xfeff < var_1) {
        if (var_1 != 0xffff) goto LAB_001cad63;
        var_17 = (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_;
        if (var_17 == (type_10 *)0x0) {
          iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object
                    [0x1b])(this);
          var_17 = (type_10 *)var_10(extraout_var_00,iVar4);
          (this->super_Sized_relobj<64,_false>).super_Relobj.super_Object.xindex_ = var_17;
        }
        var_1 = type_10::var_18(var_17,(var_5 *)this,(type_3)var_30);
      }
      if (((var_19 == var_1) && (*(long *)(var_20 + 2) <= var_21)) &&
         (var_21 < *(long *)(var_20 + 2) + *(long *)(var_20 + 4))) {
        var_1 = *var_20;
        this_00 = &info->enclosing_symbol_name;
        info->enclosing_symbol_type = (type_12)var_20[1] & var_22;
        if (var_14 < var_1) {
          std::string::var_23((type_13 *)this_00,"(invalid)");
          return true;
        }
        std::string::var_23((type_13 *)this_00,(char *)(var_24 + var_1));
        if (parameters->options_ != (type_14 *)0x0) {
          var_25 = parameters->options_->do_demangle_;
          if ((var_25 != false) &&
             (var_27 = var_26((info->enclosing_symbol_name)._M_dataplus._M_p,3),
             var_27 != (char *)0x0)) {
            std::string::var_23((type_13 *)this_00,var_27);
            var_28(var_27);
            return var_25;
          }
          return true;
        }
                    /* WARNING: Subroutine does not return */
        var_29("../../gold/parameters.h",0x5c,"options");
      }
LAB_001cad63:
      var_30 = var_30 + 1;
      var_20 = var_20 + 6;
      if (var_31 <= var_30) {
        return false;
      }
    }
    var_1 = *var_20;
    uVar2 = (info->source_file)._M_string_length;
    if (var_1 < var_14) {
      sVar5 = var_32((char *)(var_24 + var_1));
      std::string::var_33((type_13 *)info,0,uVar2,(char *)(var_24 + var_1),sVar5);
      goto LAB_001cad63;
    }
    var_30 = var_30 + 1;
    var_20 = var_20 + 6;
    std::string::var_33((type_13 *)info,0,uVar2,"(invalid)",9);
    if (var_31 <= var_30) {
      return false;
    }
  } while( true );
}


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

char MASKED(long *param_1,uint param_2,long param_3,long param_4)

{
  char cVar1;
  int iVar2;
  undefined8 uVar3;
  uint uVar4;
  size_t sVar5;
  code *pcVar6;
  long lVar7;
  void *__ptr;
  char *__s;
  ulong uVar8;
  uint *puVar9;
  ulong uVar10;
  undefined1 auVar11 [16];
  long local_50;
  ulong local_48;
  ulong local_40 [2];
  
  iVar2 = *(int *)((long)param_1 + 0x11c);
  if (iVar2 == 0) {
    return '\0';
  }
  if (*(code **)(*param_1 + 0x70) == FUN_001ca450) {
    puVar9 = (uint *)((long)&DAT_003799a6 + 1);
    auVar11 = FUN_001ca3b0(param_1 + 0x1f,iVar2);
    local_48 = auVar11._8_8_;
    if (local_48 != 0) {
      if (param_1[5] == 0) goto LAB_001caff0;
      puVar9 = (uint *)FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_48,1,0);
    }
  }
  else {
    puVar9 = (uint *)(**(code **)(*param_1 + 0x70))(param_1,iVar2,&local_48,0);
  }
  if (*(code **)(*param_1 + 0xa8) == FUN_001cac40) {
    uVar4 = FUN_001caba0(param_1 + 0x1f);
  }
  else {
    uVar4 = (**(code **)(*param_1 + 0xa8))(param_1,*(undefined4 *)((long)param_1 + 0x11c));
  }
  if (uVar4 < 0xff00) {
    pcVar6 = *(code **)(*param_1 + 0x70);
    if (pcVar6 == FUN_001ca450) {
LAB_001cad00:
      auVar11 = FUN_001ca3b0(param_1 + 0x1f,uVar4);
      local_40[0] = auVar11._8_8_;
      local_50 = 0x3799a7;
      if (local_40[0] != 0) {
        if (param_1[5] == 0) {
LAB_001caff0:
                    /* WARNING: Subroutine does not return */
          FUN_001bcf60();
        }
        local_50 = FUN_0017b1d0(param_1[5] + 0x28,param_1[6],auVar11._0_8_,local_40[0],1,0);
      }
      goto LAB_001cad29;
    }
  }
  else {
    FUN_001682d0(param_1 + 0x1f);
    uVar4 = uVar4 + (int)param_1[0x22];
    pcVar6 = *(code **)(*param_1 + 0x70);
    if (pcVar6 == FUN_001ca450) goto LAB_001cad00;
  }
  local_50 = (*pcVar6)(param_1,uVar4,local_40,0);
LAB_001cad29:
  uVar8 = local_48 / 0x18;
  if (local_48 < 0x18) {
    return '\0';
  }
  uVar10 = 0;
  do {
    while ((puVar9[1] & 0xf) != 4) {
      uVar4 = (uint)*(ushort *)((long)puVar9 + 6);
      if (0xfeff < uVar4) {
        if (uVar4 != 0xffff) goto LAB_001cad63;
        lVar7 = param_1[8];
        if (lVar7 == 0) {
          lVar7 = (**(code **)(*param_1 + 0xd8))(param_1);
          param_1[8] = lVar7;
        }
        uVar4 = FUN_001bd230(lVar7,param_1,uVar10 & 0xffffffff);
      }
      if (((param_2 == uVar4) && (*(long *)(puVar9 + 2) <= param_3)) &&
         (param_3 < *(long *)(puVar9 + 2) + *(long *)(puVar9 + 4))) {
        uVar4 = *puVar9;
        lVar7 = param_4 + 0x20;
        *(uint *)(param_4 + 0x40) = (byte)puVar9[1] & 0xf;
        if (local_40[0] < uVar4) {
          FUN_002e2900(lVar7,"(invalid)");
          return '\x01';
        }
        FUN_002e2900(lVar7,(ulong)uVar4 + local_50);
        if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {
          cVar1 = *(char *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x9055);
          if ((cVar1 != '\0') &&
             (__ptr = (void *)FUN_002c3ad0(*(undefined8 *)(param_4 + 0x20),3), __ptr != (void *)0x0)
             ) {
            FUN_002e2900(lVar7,__ptr);
            free(__ptr);
            return cVar1;
          }
          return '\x01';
        }
                    /* WARNING: Subroutine does not return */
        FUN_0017c650("../../gold/parameters.h",0x5c,"options");
      }
LAB_001cad63:
      uVar10 = uVar10 + 1;
      puVar9 = puVar9 + 6;
      if (uVar8 <= uVar10) {
        return '\0';
      }
    }
    uVar3 = *(undefined8 *)(param_4 + 8);
    if (*puVar9 < local_40[0]) {
      __s = (char *)((ulong)*puVar9 + local_50);
      sVar5 = strlen(__s);
      FUN_002e25a0(param_4,0,uVar3,__s,sVar5);
      goto LAB_001cad63;
    }
    uVar10 = uVar10 + 1;
    puVar9 = puVar9 + 6;
    FUN_002e25a0(param_4,0,uVar3,"(invalid)",9);
    if (uVar8 <= uVar10) {
      return '\0';
    }
  } while( true );
}

