
/* DWARF original prototype: bool read_header(Dwarf_pubnames_table * this, off_t offset) */

bool __thiscall gold::Dwarf_pubnames_table::read_header(Dwarf_pubnames_table *this,off_t offset)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  _func_int_varargs **pp_Var5;
  Valtype return_value;
  short sVar6;
  Valtype return_value_1;
  ulong uVar7;
  _func_int_varargs *p_Var8;
  uint *puVar9;
  uchar *puVar10;
  
  puVar10 = this->buffer_;
  if (puVar10 == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header");
  }
  if ((-1 < offset) && (offset + 0xe < (long)this->buffer_end_ - (long)puVar10)) {
    puVar1 = (uint *)(puVar10 + offset);
    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;
    p_Var8 = pp_Var5[3];
    if (p_Var8 == Relobj::is_big_endian) {
      iVar4 = (*pp_Var5[0x3a])();
      cVar3 = (char)iVar4;
    }
    else {
      iVar4 = (*p_Var8)();
      cVar3 = (char)iVar4;
    }
    uVar2 = *puVar1;
    puVar9 = puVar1 + 1;
    if (cVar3 != '\0') {
      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    }
    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;
    uVar7 = (ulong)uVar2;
    p_Var8 = pp_Var5[3];
    if (uVar2 == 0xffffffff) {
      if (p_Var8 == Relobj::is_big_endian) {
        iVar4 = (*pp_Var5[0x3a])();
        cVar3 = (char)iVar4;
      }
      else {
        iVar4 = (*p_Var8)();
        cVar3 = (char)iVar4;
      }
      uVar7 = *(ulong *)(puVar1 + 1);
      puVar9 = puVar1 + 3;
      this->offset_size_ = 8;
      if (cVar3 != '\0') {
        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |
                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |
                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |
                uVar7 << 0x38;
      }
      this->unit_length_ = uVar7 + 0xc;
      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;
      p_Var8 = pp_Var5[3];
    }
    else {
      this->offset_size_ = 4;
      this->unit_length_ = uVar7 + 4;
    }
    puVar10 = (uchar *)(uVar7 + (long)puVar9);
    if (this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)) {
      puVar10 = this->buffer_end_;
    }
    this->end_of_table_ = puVar10;
    if (p_Var8 == Relobj::is_big_endian) {
      iVar4 = (*pp_Var5[0x3a])();
      cVar3 = (char)iVar4;
    }
    else {
      iVar4 = (*p_Var8)();
      cVar3 = (char)iVar4;
    }
    sVar6 = (short)*puVar9;
    if (cVar3 != '\0') {
      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));
    }
    if (sVar6 == 2) {
      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])
                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),
                 &this->cu_offset_);
      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);
      if (puVar10 < this->buffer_end_) {
        this->pinfo_ = puVar10;
        return true;
      }
    }
  }
  return false;
}



undefined8 FUN_00301a50(long *param_1,long param_2)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  long lVar4;
  short sVar5;
  ulong uVar6;
  code *pcVar7;
  uint *puVar8;
  undefined1 *puVar9;
  
  lVar4 = param_1[1];
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");
  }
  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {
    puVar1 = (uint *)(lVar4 + param_2);
    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);
    if (pcVar7 == FUN_001b8d10) {
      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();
    }
    else {
      cVar3 = (*pcVar7)();
    }
    uVar2 = *puVar1;
    puVar8 = puVar1 + 1;
    if (cVar3 != '\0') {
      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    }
    lVar4 = **(long **)(*param_1 + 0x10);
    uVar6 = (ulong)uVar2;
    pcVar7 = *(code **)(lVar4 + 0x18);
    if (uVar2 == 0xffffffff) {
      if (pcVar7 == FUN_001b8d10) {
        cVar3 = (**(code **)(lVar4 + 0x1d0))();
      }
      else {
        cVar3 = (*pcVar7)();
      }
      uVar6 = *(ulong *)(puVar1 + 1);
      puVar8 = puVar1 + 3;
      *(undefined4 *)((long)param_1 + 0x1c) = 8;
      if (cVar3 != '\0') {
        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |
                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |
                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |
                uVar6 << 0x38;
      }
      param_1[7] = uVar6 + 0xc;
      lVar4 = **(long **)(*param_1 + 0x10);
      pcVar7 = *(code **)(lVar4 + 0x18);
    }
    else {
      *(undefined4 *)((long)param_1 + 0x1c) = 4;
      param_1[7] = uVar6 + 4;
    }
    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);
    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {
      puVar9 = (undefined1 *)param_1[2];
    }
    param_1[5] = (long)puVar9;
    if (pcVar7 == FUN_001b8d10) {
      cVar3 = (**(code **)(lVar4 + 0x1d0))();
    }
    else {
      cVar3 = (*pcVar7)();
    }
    sVar5 = (short)*puVar8;
    if (cVar3 != '\0') {
      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));
    }
    if (sVar5 == 2) {
      (**(code **)(*(long *)param_1[9] + 0x28))
                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);
      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);
      if (puVar9 < (undefined1 *)param_1[2]) {
        param_1[4] = (long)puVar9;
        return 1;
      }
    }
  }
  return 0;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RAX,qword ptr [RDI + 0x8]
TEST RAX,RAX
JZ 0x00301be4
TEST RSI,RSI
JS 0x00301a7f
MOV RDX,qword ptr [RDI + 0x10]
LEA RCX,[RSI + 0xe]
MOV RBX,RDI
SUB RDX,RAX
CMP RCX,RDX
JL 0x00301a90
ADD RSP,0x8
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
RET
LEA RBP,[RAX + RSI*0x1]
MOV RAX,qword ptr [RDI]
LEA R13,[0x1b8d10]
MOV RDI,qword ptr [RAX + 0x10]
MOV RAX,qword ptr [RDI]
MOV RDX,qword ptr [RAX + 0x18]
CMP RDX,R13
JNZ 0x00301bd0
CALL qword ptr [RAX + 0x1d0]
TEST AL,AL
MOV RAX,qword ptr [RBX]
MOV ECX,dword ptr [RBP]
LEA R12,[RBP + 0x4]
MOV RDI,qword ptr [RAX + 0x10]
MOV EDX,ECX
BSWAP EDX
CMOVNZ ECX,EDX
MOV RAX,qword ptr [RDI]
MOV EDX,ECX
MOV RSI,qword ptr [RAX + 0x18]
CMP ECX,-0x1
JZ 0x00301b80
LEA RCX,[RDX + 0x4]
MOV dword ptr [RBX + 0x1c],0x4
MOV qword ptr [RBX + 0x38],RCX
MOV RCX,qword ptr [RBX + 0x10]
ADD RDX,R12
CMP RDX,RCX
CMOVA RDX,RCX
MOV qword ptr [RBX + 0x28],RDX
CMP RSI,R13
JNZ 0x00301bc8
CALL qword ptr [RAX + 0x1d0]
MOVZX EDX,byte ptr [R12 + 0x1]
MOVZX ECX,byte ptr [R12]
TEST AL,AL
JNZ 0x00301b70
SHL EDX,0x8
OR EDX,ECX
CMP DX,0x2
JNZ 0x00301a7f
MOV RDI,qword ptr [RBX + 0x48]
ADD R12,0x2
LEA RDX,[RBX + 0x40]
MOV RSI,R12
SUB RSI,qword ptr [RBX + 0x8]
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x28]
MOV EAX,dword ptr [RBX + 0x1c]
ADD EAX,EAX
ADD R12,RAX
CMP qword ptr [RBX + 0x10],R12
JBE 0x00301a7f
MOV qword ptr [RBX + 0x20],R12
ADD RSP,0x8
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
RET
SHL ECX,0x8
OR EDX,ECX
JMP 0x00301b25
CMP RSI,R13
JNZ 0x00301be0
CALL qword ptr [RAX + 0x1d0]
MOV RDX,qword ptr [RBP + 0x4]
TEST AL,AL
LEA R12,[RBP + 0xc]
MOV dword ptr [RBX + 0x1c],0x8
MOV RCX,RDX
BSWAP RCX
CMOVNZ RDX,RCX
LEA RAX,[RDX + 0xc]
MOV qword ptr [RBX + 0x38],RAX
MOV RAX,qword ptr [RBX]
MOV RDI,qword ptr [RAX + 0x10]
MOV RAX,qword ptr [RDI]
MOV RSI,qword ptr [RAX + 0x18]
JMP 0x00301af0
CALL RSI
JMP 0x00301b11
CALL RDX
JMP 0x00301ab8
CALL RSI
JMP 0x00301b8b
LEA RDX,[0x3fad90]
MOV ESI,0x22f
LEA RDI,[0x3fa945]
CALL 0x001e9890
(translation_unit "undefined8 FUN_00301a50(long *param_1,long param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_00301a50(long *param_1,long param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00301a50(long *param_1,long param_2)" identifier (parameter_list "(long *param_1,long param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "short sVar5;" (sized_type_specifier "short" short) identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "lVar4 = param_1[1];" (assignment_expression "lVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (lVar4 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" { comment (expression_statement "FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");" (call_expression "FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header")" identifier (argument_list "("../../gold/dwarf_reader.cc",0x22f,"read_header")" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""read_header"" " string_content ") ))) ;) })) (if_statement "if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4))" ( (binary_expression "(-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)" (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) && (parenthesized_expression "(param_2 + 0xe < param_1[2] - lVar4)" ( (binary_expression "param_2 + 0xe < param_1[2] - lVar4" (binary_expression "param_2 + 0xe" identifier + number_literal) < (binary_expression "param_1[2] - lVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier)) ))) )) (compound_statement "{\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }" { (expression_statement "puVar1 = (uint *)(lVar4 + param_2);" (assignment_expression "puVar1 = (uint *)(lVar4 + param_2)" identifier = (cast_expression "(uint *)(lVar4 + param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + param_2)" ( (binary_expression "lVar4 + param_2" identifier + identifier) )))) ;) (expression_statement "pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);" (assignment_expression "pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18)" identifier = (pointer_expression "*(code **)(**(long **)(*param_1 + 0x10) + 0x18)" * (cast_expression "(code **)(**(long **)(*param_1 + 0x10) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(*param_1 + 0x10) + 0x18)" ( (binary_expression "**(long **)(*param_1 + 0x10) + 0x18" (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }" if (parenthesized_expression "(pcVar7 == FUN_001b8d10)" ( (binary_expression "pcVar7 == FUN_001b8d10" identifier == identifier) )) (compound_statement "{\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }" { (expression_statement "cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))()" identifier = (call_expression "(**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))()" (parenthesized_expression "(**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))" ( (pointer_expression "**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" * (pointer_expression "*(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" * (cast_expression "(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(*param_1 + 0x10) + 0x1d0)" ( (binary_expression "**(long **)(*param_1 + 0x10) + 0x1d0" (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n      cVar3 = (*pcVar7)();\n    }" else (compound_statement "{\n      cVar3 = (*pcVar7)();\n    }" { (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" identifier = (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "puVar8 = puVar1 + 1;" (assignment_expression "puVar8 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" { (expression_statement "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) })) (expression_statement "lVar4 = **(long **)(*param_1 + 0x10);" (assignment_expression "lVar4 = **(long **)(*param_1 + 0x10)" identifier = (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))))) ;) (expression_statement "uVar6 = (ulong)uVar2;" (assignment_expression "uVar6 = (ulong)uVar2" identifier = (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar7 = *(code **)(lVar4 + 0x18);" (assignment_expression "pcVar7 = *(code **)(lVar4 + 0x18)" identifier = (pointer_expression "*(code **)(lVar4 + 0x18)" * (cast_expression "(code **)(lVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }" { (if_statement "if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }" if (parenthesized_expression "(pcVar7 == FUN_001b8d10)" ( (binary_expression "pcVar7 == FUN_001b8d10" identifier == identifier) )) (compound_statement "{\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }" { (expression_statement "cVar3 = (**(code **)(lVar4 + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(lVar4 + 0x1d0))()" identifier = (call_expression "(**(code **)(lVar4 + 0x1d0))()" (parenthesized_expression "(**(code **)(lVar4 + 0x1d0))" ( (pointer_expression "**(code **)(lVar4 + 0x1d0)" * (pointer_expression "*(code **)(lVar4 + 0x1d0)" * (cast_expression "(code **)(lVar4 + 0x1d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x1d0)" ( (binary_expression "lVar4 + 0x1d0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n        cVar3 = (*pcVar7)();\n      }" else (compound_statement "{\n        cVar3 = (*pcVar7)();\n      }" { (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" identifier = (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar6 = *(ulong *)(puVar1 + 1);" (assignment_expression "uVar6 = *(ulong *)(puVar1 + 1)" identifier = (pointer_expression "*(ulong *)(puVar1 + 1)" * (cast_expression "(ulong *)(puVar1 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar1 + 3;" (assignment_expression "puVar8 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((long)param_1 + 0x1c) = 8;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x1c) = 8" (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }" { (expression_statement "uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;" (assignment_expression "uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38" identifier = (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28" (binary_expression "uVar6 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar6 & 0xff000000000000)" ( (binary_expression "uVar6 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar6 & 0xff0000000000)" ( (binary_expression "uVar6 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00000000) >> 8" (parenthesized_expression "(uVar6 & 0xff00000000)" ( (binary_expression "uVar6 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff000000) << 8" (parenthesized_expression "(uVar6 & 0xff000000)" ( (binary_expression "uVar6 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar6 & 0xff0000) << 0x18" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar6 & 0xff00) << 0x28" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x38" identifier << number_literal))) ;) })) (expression_statement "param_1[7] = uVar6 + 0xc;" (assignment_expression "param_1[7] = uVar6 + 0xc" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (binary_expression "uVar6 + 0xc" identifier + number_literal)) ;) (expression_statement "lVar4 = **(long **)(*param_1 + 0x10);" (assignment_expression "lVar4 = **(long **)(*param_1 + 0x10)" identifier = (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))))) ;) (expression_statement "pcVar7 = *(code **)(lVar4 + 0x18);" (assignment_expression "pcVar7 = *(code **)(lVar4 + 0x18)" identifier = (pointer_expression "*(code **)(lVar4 + 0x18)" * (cast_expression "(code **)(lVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" else (compound_statement "{\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" { (expression_statement "*(undefined4 *)((long)param_1 + 0x1c) = 4;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x1c) = 4" (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_1[7] = uVar6 + 4;" (assignment_expression "param_1[7] = uVar6 + 4" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) }))) (expression_statement "puVar9 = (undefined1 *)(uVar6 + (long)puVar8);" (assignment_expression "puVar9 = (undefined1 *)(uVar6 + (long)puVar8)" identifier = (cast_expression "(undefined1 *)(uVar6 + (long)puVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (long)puVar8)" ( (binary_expression "uVar6 + (long)puVar8" identifier + (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }" if (parenthesized_expression "((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8))" ( (binary_expression "(undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)" (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) < (cast_expression "(undefined1 *)(uVar6 + (long)puVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (long)puVar8)" ( (binary_expression "uVar6 + (long)puVar8" identifier + (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n      puVar9 = (undefined1 *)param_1[2];\n    }" { (expression_statement "puVar9 = (undefined1 *)param_1[2];" (assignment_expression "puVar9 = (undefined1 *)param_1[2]" identifier = (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[5] = (long)puVar9;" (assignment_expression "param_1[5] = (long)puVar9" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }" if (parenthesized_expression "(pcVar7 == FUN_001b8d10)" ( (binary_expression "pcVar7 == FUN_001b8d10" identifier == identifier) )) (compound_statement "{\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }" { (expression_statement "cVar3 = (**(code **)(lVar4 + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(lVar4 + 0x1d0))()" identifier = (call_expression "(**(code **)(lVar4 + 0x1d0))()" (parenthesized_expression "(**(code **)(lVar4 + 0x1d0))" ( (pointer_expression "**(code **)(lVar4 + 0x1d0)" * (pointer_expression "*(code **)(lVar4 + 0x1d0)" * (cast_expression "(code **)(lVar4 + 0x1d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x1d0)" ( (binary_expression "lVar4 + 0x1d0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n      cVar3 = (*pcVar7)();\n    }" else (compound_statement "{\n      cVar3 = (*pcVar7)();\n    }" { (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" identifier = (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "sVar5 = (short)*puVar8;" (assignment_expression "sVar5 = (short)*puVar8" identifier = (cast_expression "(short)*puVar8" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }" { (expression_statement "sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));" (assignment_expression "sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" identifier = (call_expression "CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" identifier (argument_list "((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" ( (cast_expression "(char)*puVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar8" * identifier)) , (pointer_expression "*(undefined1 *)((long)puVar8 + 1)" * (cast_expression "(undefined1 *)((long)puVar8 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 1)" ( (binary_expression "(long)puVar8 + 1" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) })) (if_statement "if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }" if (parenthesized_expression "(sVar5 == 2)" ( (binary_expression "sVar5 == 2" identifier == number_literal) )) (compound_statement "{\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }" { (expression_statement "(**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);" (call_expression "(**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8)" (parenthesized_expression "(**(code **)(*(long *)param_1[9] + 0x28))" ( (pointer_expression "**(code **)(*(long *)param_1[9] + 0x28)" * (pointer_expression "*(code **)(*(long *)param_1[9] + 0x28)" * (cast_expression "(code **)(*(long *)param_1[9] + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[9] + 0x28)" ( (binary_expression "*(long *)param_1[9] + 0x28" (pointer_expression "*(long *)param_1[9]" * (cast_expression "(long *)param_1[9]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8)" ( (cast_expression "(long *)param_1[9]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ])) , (cast_expression "(undefined1 *)((long)puVar8 + (2 - param_1[1]))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + (2 - param_1[1]))" ( (binary_expression "(long)puVar8 + (2 - param_1[1])" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(2 - param_1[1])" ( (binary_expression "2 - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) ))) ))) , (binary_expression "param_1 + 8" identifier + number_literal) ))) ;) (expression_statement "puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);" (assignment_expression "puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" identifier = (cast_expression "(undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" ( (binary_expression "(long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2" (binary_expression "(long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2)" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(*(int *)((long)param_1 + 0x1c) * 2)" ( (binary_expression "*(int *)((long)param_1 + 0x1c) * 2" (pointer_expression "*(int *)((long)param_1 + 0x1c)" * (cast_expression "(int *)((long)param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) * number_literal) )))) + number_literal) )))) ;) (if_statement "if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }" if (parenthesized_expression "(puVar9 < (undefined1 *)param_1[2])" ( (binary_expression "puVar9 < (undefined1 *)param_1[2]" identifier < (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n        param_1[4] = (long)puVar9;\n        return 1;\n      }" { (expression_statement "param_1[4] = (long)puVar9;" (assignment_expression "param_1[4] = (long)puVar9" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (return_statement "return 1;" return number_literal ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: bool read_header(Dwarf_pubnames_table * this, off_t offset) */\n\nbool __thiscall gold::Dwarf_pubnames_table::read_header(Dwarf_pubnames_table *this,off_t offset)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  _func_int_varargs **pp_Var5;\n  Valtype return_value;\n  short sVar6;\n  Valtype return_value_1;\n  ulong uVar7;\n  _func_int_varargs *p_Var8;\n  uint *puVar9;\n  uchar *puVar10;\n  \n  puVar10 = this->buffer_;\n  if (puVar10 == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < offset) && (offset + 0xe < (long)this->buffer_end_ - (long)puVar10)) {\n    puVar1 = (uint *)(puVar10 + offset);\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    p_Var8 = pp_Var5[3];\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    uVar2 = *puVar1;\n    puVar9 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    uVar7 = (ulong)uVar2;\n    p_Var8 = pp_Var5[3];\n    if (uVar2 == 0xffffffff) {\n      if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }\n      uVar7 = *(ulong *)(puVar1 + 1);\n      puVar9 = puVar1 + 3;\n      this->offset_size_ = 8;\n      if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }\n      this->unit_length_ = uVar7 + 0xc;\n      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n      p_Var8 = pp_Var5[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }\n    puVar10 = (uchar *)(uVar7 + (long)puVar9);\n    if (this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    sVar6 = (short)*puVar9;\n    if (cVar3 != '\0') {\n      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));\n    }\n    if (sVar6 == 2) {\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);\n      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\n" comment (function_definition "bool __thiscall gold::Dwarf_pubnames_table::read_header(Dwarf_pubnames_table *this,off_t offset)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  _func_int_varargs **pp_Var5;\n  Valtype return_value;\n  short sVar6;\n  Valtype return_value_1;\n  ulong uVar7;\n  _func_int_varargs *p_Var8;\n  uint *puVar9;\n  uchar *puVar10;\n  \n  puVar10 = this->buffer_;\n  if (puVar10 == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < offset) && (offset + 0xe < (long)this->buffer_end_ - (long)puVar10)) {\n    puVar1 = (uint *)(puVar10 + offset);\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    p_Var8 = pp_Var5[3];\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    uVar2 = *puVar1;\n    puVar9 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    uVar7 = (ulong)uVar2;\n    p_Var8 = pp_Var5[3];\n    if (uVar2 == 0xffffffff) {\n      if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }\n      uVar7 = *(ulong *)(puVar1 + 1);\n      puVar9 = puVar1 + 3;\n      this->offset_size_ = 8;\n      if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }\n      this->unit_length_ = uVar7 + 0xc;\n      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n      p_Var8 = pp_Var5[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }\n    puVar10 = (uchar *)(uVar7 + (long)puVar9);\n    if (this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    sVar6 = (short)*puVar9;\n    if (cVar3 != '\0') {\n      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));\n    }\n    if (sVar6 == 2) {\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);\n      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }\n  }\n  return false;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwarf_pubnames_table::" identifier : : identifier : :) (function_declarator "read_header(Dwarf_pubnames_table *this,off_t offset)" identifier (parameter_list "(Dwarf_pubnames_table *this,off_t offset)" ( (parameter_declaration "Dwarf_pubnames_table *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t offset" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  _func_int_varargs **pp_Var5;\n  Valtype return_value;\n  short sVar6;\n  Valtype return_value_1;\n  ulong uVar7;\n  _func_int_varargs *p_Var8;\n  uint *puVar9;\n  uchar *puVar10;\n  \n  puVar10 = this->buffer_;\n  if (puVar10 == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < offset) && (offset + 0xe < (long)this->buffer_end_ - (long)puVar10)) {\n    puVar1 = (uint *)(puVar10 + offset);\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    p_Var8 = pp_Var5[3];\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    uVar2 = *puVar1;\n    puVar9 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    uVar7 = (ulong)uVar2;\n    p_Var8 = pp_Var5[3];\n    if (uVar2 == 0xffffffff) {\n      if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }\n      uVar7 = *(ulong *)(puVar1 + 1);\n      puVar9 = puVar1 + 3;\n      this->offset_size_ = 8;\n      if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }\n      this->unit_length_ = uVar7 + 0xc;\n      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n      p_Var8 = pp_Var5[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }\n    puVar10 = (uchar *)(uVar7 + (long)puVar9);\n    if (this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    sVar6 = (short)*puVar9;\n    if (cVar3 != '\0') {\n      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));\n    }\n    if (sVar6 == 2) {\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);\n      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }\n  }\n  return false;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "_func_int_varargs **pp_Var5;" type_identifier (pointer_declarator "**pp_Var5" * (pointer_declarator "*pp_Var5" * identifier)) ;) (declaration "Valtype return_value;" type_identifier identifier ;) (declaration "short sVar6;" (sized_type_specifier "short" short) identifier ;) (declaration "Valtype return_value_1;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "_func_int_varargs *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (expression_statement "puVar10 = this->buffer_;" (assignment_expression "puVar10 = this->buffer_" identifier = (field_expression "this->buffer_" identifier -> field_identifier)) ;) (if_statement "if (puVar10 == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" if (parenthesized_expression "(puVar10 == (uchar *)0x0)" ( (binary_expression "puVar10 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header");" (call_expression "do_gold_unreachable("../../gold/dwarf_reader.cc",0x22f,"read_header")" identifier (argument_list "("../../gold/dwarf_reader.cc",0x22f,"read_header")" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""read_header"" " string_content ") ))) ;) })) (if_statement "if ((-1 < offset) && (offset + 0xe < (long)this->buffer_end_ - (long)puVar10)) {\n    puVar1 = (uint *)(puVar10 + offset);\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    p_Var8 = pp_Var5[3];\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    uVar2 = *puVar1;\n    puVar9 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    uVar7 = (ulong)uVar2;\n    p_Var8 = pp_Var5[3];\n    if (uVar2 == 0xffffffff) {\n      if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }\n      uVar7 = *(ulong *)(puVar1 + 1);\n      puVar9 = puVar1 + 3;\n      this->offset_size_ = 8;\n      if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }\n      this->unit_length_ = uVar7 + 0xc;\n      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n      p_Var8 = pp_Var5[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }\n    puVar10 = (uchar *)(uVar7 + (long)puVar9);\n    if (this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    sVar6 = (short)*puVar9;\n    if (cVar3 != '\0') {\n      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));\n    }\n    if (sVar6 == 2) {\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);\n      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }\n  }" if (parenthesized_expression "((-1 < offset) && (offset + 0xe < (long)this->buffer_end_ - (long)puVar10))" ( (binary_expression "(-1 < offset) && (offset + 0xe < (long)this->buffer_end_ - (long)puVar10)" (parenthesized_expression "(-1 < offset)" ( (binary_expression "-1 < offset" number_literal < identifier) )) && (parenthesized_expression "(offset + 0xe < (long)this->buffer_end_ - (long)puVar10)" ( (binary_expression "offset + 0xe < (long)this->buffer_end_ - (long)puVar10" (binary_expression "offset + 0xe" identifier + number_literal) < (binary_expression "(long)this->buffer_end_ - (long)puVar10" (cast_expression "(long)this->buffer_end_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "this->buffer_end_" identifier -> field_identifier)) - (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ))) )) (compound_statement "{\n    puVar1 = (uint *)(puVar10 + offset);\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    p_Var8 = pp_Var5[3];\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    uVar2 = *puVar1;\n    puVar9 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n    uVar7 = (ulong)uVar2;\n    p_Var8 = pp_Var5[3];\n    if (uVar2 == 0xffffffff) {\n      if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }\n      uVar7 = *(ulong *)(puVar1 + 1);\n      puVar9 = puVar1 + 3;\n      this->offset_size_ = 8;\n      if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }\n      this->unit_length_ = uVar7 + 0xc;\n      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n      p_Var8 = pp_Var5[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }\n    puVar10 = (uchar *)(uVar7 + (long)puVar9);\n    if (this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }\n    sVar6 = (short)*puVar9;\n    if (cVar3 != '\0') {\n      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));\n    }\n    if (sVar6 == 2) {\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);\n      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }\n  }" { (expression_statement "puVar1 = (uint *)(puVar10 + offset);" (assignment_expression "puVar1 = (uint *)(puVar10 + offset)" identifier = (cast_expression "(uint *)(puVar10 + offset)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + offset)" ( (binary_expression "puVar10 + offset" identifier + identifier) )))) ;) (expression_statement "pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;" (assignment_expression "pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object" identifier = (field_expression "(this->dwinfo_->object_->super_Object)._vptr_Object" (parenthesized_expression "(this->dwinfo_->object_->super_Object)" ( (field_expression "this->dwinfo_->object_->super_Object" (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var8 = pp_Var5[3];" (assignment_expression "p_Var8 = pp_Var5[3]" identifier = (subscript_expression "pp_Var5[3]" identifier [ number_literal ])) ;) (if_statement "if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }" if (parenthesized_expression "(p_Var8 == Relobj::is_big_endian)" ( (binary_expression "p_Var8 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }" { (expression_statement "iVar4 = (*pp_Var5[0x3a])();" (assignment_expression "iVar4 = (*pp_Var5[0x3a])()" identifier = (call_expression "(*pp_Var5[0x3a])()" (parenthesized_expression "(*pp_Var5[0x3a])" ( (pointer_expression "*pp_Var5[0x3a]" * (subscript_expression "pp_Var5[0x3a]" identifier [ number_literal ])) )) (argument_list "()" ( )))) ;) (expression_statement "cVar3 = (char)iVar4;" (assignment_expression "cVar3 = (char)iVar4" identifier = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }" else (compound_statement "{\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }" { (expression_statement "iVar4 = (*p_Var8)();" (assignment_expression "iVar4 = (*p_Var8)()" identifier = (call_expression "(*p_Var8)()" (parenthesized_expression "(*p_Var8)" ( (pointer_expression "*p_Var8" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar3 = (char)iVar4;" (assignment_expression "cVar3 = (char)iVar4" identifier = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "puVar9 = puVar1 + 1;" (assignment_expression "puVar9 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" { (expression_statement "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) })) (expression_statement "pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;" (assignment_expression "pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object" identifier = (field_expression "(this->dwinfo_->object_->super_Object)._vptr_Object" (parenthesized_expression "(this->dwinfo_->object_->super_Object)" ( (field_expression "this->dwinfo_->object_->super_Object" (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar7 = (ulong)uVar2;" (assignment_expression "uVar7 = (ulong)uVar2" identifier = (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "p_Var8 = pp_Var5[3];" (assignment_expression "p_Var8 = pp_Var5[3]" identifier = (subscript_expression "pp_Var5[3]" identifier [ number_literal ])) ;) (if_statement "if (uVar2 == 0xffffffff) {\n      if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }\n      uVar7 = *(ulong *)(puVar1 + 1);\n      puVar9 = puVar1 + 3;\n      this->offset_size_ = 8;\n      if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }\n      this->unit_length_ = uVar7 + 0xc;\n      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n      p_Var8 = pp_Var5[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }\n      uVar7 = *(ulong *)(puVar1 + 1);\n      puVar9 = puVar1 + 3;\n      this->offset_size_ = 8;\n      if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }\n      this->unit_length_ = uVar7 + 0xc;\n      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;\n      p_Var8 = pp_Var5[3];\n    }" { (if_statement "if (p_Var8 == Relobj::is_big_endian) {\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }\n      else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }" if (parenthesized_expression "(p_Var8 == Relobj::is_big_endian)" ( (binary_expression "p_Var8 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n        iVar4 = (*pp_Var5[0x3a])();\n        cVar3 = (char)iVar4;\n      }" { (expression_statement "iVar4 = (*pp_Var5[0x3a])();" (assignment_expression "iVar4 = (*pp_Var5[0x3a])()" identifier = (call_expression "(*pp_Var5[0x3a])()" (parenthesized_expression "(*pp_Var5[0x3a])" ( (pointer_expression "*pp_Var5[0x3a]" * (subscript_expression "pp_Var5[0x3a]" identifier [ number_literal ])) )) (argument_list "()" ( )))) ;) (expression_statement "cVar3 = (char)iVar4;" (assignment_expression "cVar3 = (char)iVar4" identifier = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }" else (compound_statement "{\n        iVar4 = (*p_Var8)();\n        cVar3 = (char)iVar4;\n      }" { (expression_statement "iVar4 = (*p_Var8)();" (assignment_expression "iVar4 = (*p_Var8)()" identifier = (call_expression "(*p_Var8)()" (parenthesized_expression "(*p_Var8)" ( (pointer_expression "*p_Var8" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar3 = (char)iVar4;" (assignment_expression "cVar3 = (char)iVar4" identifier = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "uVar7 = *(ulong *)(puVar1 + 1);" (assignment_expression "uVar7 = *(ulong *)(puVar1 + 1)" identifier = (pointer_expression "*(ulong *)(puVar1 + 1)" * (cast_expression "(ulong *)(puVar1 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar9 = puVar1 + 3;" (assignment_expression "puVar9 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "this->offset_size_ = 8;" (assignment_expression "this->offset_size_ = 8" (field_expression "this->offset_size_" identifier -> field_identifier) = number_literal) ;) (if_statement "if (cVar3 != '\0') {\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;\n      }" { (expression_statement "uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38;" (assignment_expression "uVar7 = uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38" identifier = (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28 |\n                uVar7 << 0x38" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18 | (uVar7 & 0xff00) << 0x28" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8 | (uVar7 & 0xff0000) << 0x18" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8 |\n                (uVar7 & 0xff000000) << 8" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18 | (uVar7 & 0xff00000000) >> 8" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28 |\n                (uVar7 & 0xff0000000000) >> 0x18" (binary_expression "uVar7 >> 0x38 | (uVar7 & 0xff000000000000) >> 0x28" (binary_expression "uVar7 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar7 & 0xff000000000000)" ( (binary_expression "uVar7 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar7 & 0xff0000000000)" ( (binary_expression "uVar7 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00000000) >> 8" (parenthesized_expression "(uVar7 & 0xff00000000)" ( (binary_expression "uVar7 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff000000) << 8" (parenthesized_expression "(uVar7 & 0xff000000)" ( (binary_expression "uVar7 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar7 & 0xff0000) << 0x18" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar7 & 0xff00) << 0x28" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x38" identifier << number_literal))) ;) })) (expression_statement "this->unit_length_ = uVar7 + 0xc;" (assignment_expression "this->unit_length_ = uVar7 + 0xc" (field_expression "this->unit_length_" identifier -> field_identifier) = (binary_expression "uVar7 + 0xc" identifier + number_literal)) ;) (expression_statement "pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;" (assignment_expression "pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object" identifier = (field_expression "(this->dwinfo_->object_->super_Object)._vptr_Object" (parenthesized_expression "(this->dwinfo_->object_->super_Object)" ( (field_expression "this->dwinfo_->object_->super_Object" (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var8 = pp_Var5[3];" (assignment_expression "p_Var8 = pp_Var5[3]" identifier = (subscript_expression "pp_Var5[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }" else (compound_statement "{\n      this->offset_size_ = 4;\n      this->unit_length_ = uVar7 + 4;\n    }" { (expression_statement "this->offset_size_ = 4;" (assignment_expression "this->offset_size_ = 4" (field_expression "this->offset_size_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->unit_length_ = uVar7 + 4;" (assignment_expression "this->unit_length_ = uVar7 + 4" (field_expression "this->unit_length_" identifier -> field_identifier) = (binary_expression "uVar7 + 4" identifier + number_literal)) ;) }))) (expression_statement "puVar10 = (uchar *)(uVar7 + (long)puVar9);" (assignment_expression "puVar10 = (uchar *)(uVar7 + (long)puVar9)" identifier = (cast_expression "(uchar *)(uVar7 + (long)puVar9)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + (long)puVar9)" ( (binary_expression "uVar7 + (long)puVar9" identifier + (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if (this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)) {\n      puVar10 = this->buffer_end_;\n    }" if (parenthesized_expression "(this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9))" ( (binary_expression "this->buffer_end_ < (uchar *)(uVar7 + (long)puVar9)" (field_expression "this->buffer_end_" identifier -> field_identifier) < (cast_expression "(uchar *)(uVar7 + (long)puVar9)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 + (long)puVar9)" ( (binary_expression "uVar7 + (long)puVar9" identifier + (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n      puVar10 = this->buffer_end_;\n    }" { (expression_statement "puVar10 = this->buffer_end_;" (assignment_expression "puVar10 = this->buffer_end_" identifier = (field_expression "this->buffer_end_" identifier -> field_identifier)) ;) })) (expression_statement "this->end_of_table_ = puVar10;" (assignment_expression "this->end_of_table_ = puVar10" (field_expression "this->end_of_table_" identifier -> field_identifier) = identifier) ;) (if_statement "if (p_Var8 == Relobj::is_big_endian) {\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }\n    else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }" if (parenthesized_expression "(p_Var8 == Relobj::is_big_endian)" ( (binary_expression "p_Var8 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n      iVar4 = (*pp_Var5[0x3a])();\n      cVar3 = (char)iVar4;\n    }" { (expression_statement "iVar4 = (*pp_Var5[0x3a])();" (assignment_expression "iVar4 = (*pp_Var5[0x3a])()" identifier = (call_expression "(*pp_Var5[0x3a])()" (parenthesized_expression "(*pp_Var5[0x3a])" ( (pointer_expression "*pp_Var5[0x3a]" * (subscript_expression "pp_Var5[0x3a]" identifier [ number_literal ])) )) (argument_list "()" ( )))) ;) (expression_statement "cVar3 = (char)iVar4;" (assignment_expression "cVar3 = (char)iVar4" identifier = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }" else (compound_statement "{\n      iVar4 = (*p_Var8)();\n      cVar3 = (char)iVar4;\n    }" { (expression_statement "iVar4 = (*p_Var8)();" (assignment_expression "iVar4 = (*p_Var8)()" identifier = (call_expression "(*p_Var8)()" (parenthesized_expression "(*p_Var8)" ( (pointer_expression "*p_Var8" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "cVar3 = (char)iVar4;" (assignment_expression "cVar3 = (char)iVar4" identifier = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "sVar6 = (short)*puVar9;" (assignment_expression "sVar6 = (short)*puVar9" identifier = (cast_expression "(short)*puVar9" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar9" * identifier))) ;) (if_statement "if (cVar3 != '\0') {\n      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));\n    }" { (expression_statement "sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1));" (assignment_expression "sVar6 = CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1))" identifier = (call_expression "CONCAT11((char)*puVar9,*(undefined1 *)((long)puVar9 + 1))" identifier (argument_list "((char)*puVar9,*(undefined1 *)((long)puVar9 + 1))" ( (cast_expression "(char)*puVar9" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar9" * identifier)) , (pointer_expression "*(undefined1 *)((long)puVar9 + 1)" * (cast_expression "(undefined1 *)((long)puVar9 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 1)" ( (binary_expression "(long)puVar9 + 1" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) })) (if_statement "if (sVar6 == 2) {\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);\n      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }" if (parenthesized_expression "(sVar6 == 2)" ( (binary_expression "sVar6 == 2" identifier == number_literal) )) (compound_statement "{\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);\n      puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }" { (expression_statement "(*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_);" (call_expression "(*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_)" (parenthesized_expression "(*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])" ( (pointer_expression "*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5]" * (subscript_expression "this->reloc_mapper_->_vptr_Elf_reloc_mapper[5]" (field_expression "this->reloc_mapper_->_vptr_Elf_reloc_mapper" (field_expression "this->reloc_mapper_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "(this->reloc_mapper_,(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_)),\n                 &this->cu_offset_)" ( (field_expression "this->reloc_mapper_" identifier -> field_identifier) , (cast_expression "(undefined1 *)((long)puVar9 + (2 - (long)this->buffer_))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + (2 - (long)this->buffer_))" ( (binary_expression "(long)puVar9 + (2 - (long)this->buffer_)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(2 - (long)this->buffer_)" ( (binary_expression "2 - (long)this->buffer_" number_literal - (cast_expression "(long)this->buffer_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "this->buffer_" identifier -> field_identifier))) ))) ))) , (pointer_expression "&this->cu_offset_" & (field_expression "this->cu_offset_" identifier -> field_identifier)) ))) ;) (expression_statement "puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2);" (assignment_expression "puVar10 = (uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2)" identifier = (cast_expression "(uchar *)((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + (ulong)(this->offset_size_ * 2) + 2)" ( (binary_expression "(long)puVar9 + (ulong)(this->offset_size_ * 2) + 2" (binary_expression "(long)puVar9 + (ulong)(this->offset_size_ * 2)" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(this->offset_size_ * 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(this->offset_size_ * 2)" ( (binary_expression "this->offset_size_ * 2" (field_expression "this->offset_size_" identifier -> field_identifier) * number_literal) )))) + number_literal) )))) ;) (if_statement "if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }" if (parenthesized_expression "(puVar10 < this->buffer_end_)" ( (binary_expression "puVar10 < this->buffer_end_" identifier < (field_expression "this->buffer_end_" identifier -> field_identifier)) )) (compound_statement "{\n        this->pinfo_ = puVar10;\n        return true;\n      }" { (expression_statement "this->pinfo_ = puVar10;" (assignment_expression "this->pinfo_ = puVar10" (field_expression "this->pinfo_" identifier -> field_identifier) = identifier) ;) (return_statement "return true;" return true ;) })) })) })) (return_statement "return false;" return false ;) })))
(translation_unit "undefined8 FUN_00301a50(long *param_1,long param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_00301a50(long *param_1,long param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00301a50(long *param_1,long param_2)" identifier (parameter_list "(long *param_1,long param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "short sVar5;" (sized_type_specifier "short" short) identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "lVar4 = param_1[1];" (assignment_expression "lVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (lVar4 == 0) {\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" { (expression_statement "FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");" (call_expression "FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header")" identifier (argument_list "("../../gold/dwarf_reader.cc",0x22f,"read_header")" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""read_header"" " string_content ") ))) ;) })) (if_statement "if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4))" ( (binary_expression "(-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)" (parenthesized_expression "(-1 < param_2)" ( (binary_expression "-1 < param_2" number_literal < identifier) )) && (parenthesized_expression "(param_2 + 0xe < param_1[2] - lVar4)" ( (binary_expression "param_2 + 0xe < param_1[2] - lVar4" (binary_expression "param_2 + 0xe" identifier + number_literal) < (binary_expression "param_1[2] - lVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier)) ))) )) (compound_statement "{\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }" { (expression_statement "puVar1 = (uint *)(lVar4 + param_2);" (assignment_expression "puVar1 = (uint *)(lVar4 + param_2)" identifier = (cast_expression "(uint *)(lVar4 + param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + param_2)" ( (binary_expression "lVar4 + param_2" identifier + identifier) )))) ;) (expression_statement "pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);" (assignment_expression "pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18)" identifier = (pointer_expression "*(code **)(**(long **)(*param_1 + 0x10) + 0x18)" * (cast_expression "(code **)(**(long **)(*param_1 + 0x10) + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(*param_1 + 0x10) + 0x18)" ( (binary_expression "**(long **)(*param_1 + 0x10) + 0x18" (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }" if (parenthesized_expression "(pcVar7 == FUN_001b8d10)" ( (binary_expression "pcVar7 == FUN_001b8d10" identifier == identifier) )) (compound_statement "{\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }" { (expression_statement "cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))()" identifier = (call_expression "(**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))()" (parenthesized_expression "(**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))" ( (pointer_expression "**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" * (pointer_expression "*(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" * (cast_expression "(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(*param_1 + 0x10) + 0x1d0)" ( (binary_expression "**(long **)(*param_1 + 0x10) + 0x1d0" (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n      cVar3 = (*pcVar7)();\n    }" else (compound_statement "{\n      cVar3 = (*pcVar7)();\n    }" { (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" identifier = (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "puVar8 = puVar1 + 1;" (assignment_expression "puVar8 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" { (expression_statement "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) })) (expression_statement "lVar4 = **(long **)(*param_1 + 0x10);" (assignment_expression "lVar4 = **(long **)(*param_1 + 0x10)" identifier = (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))))) ;) (expression_statement "uVar6 = (ulong)uVar2;" (assignment_expression "uVar6 = (ulong)uVar2" identifier = (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "pcVar7 = *(code **)(lVar4 + 0x18);" (assignment_expression "pcVar7 = *(code **)(lVar4 + 0x18)" identifier = (pointer_expression "*(code **)(lVar4 + 0x18)" * (cast_expression "(code **)(lVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }" { (if_statement "if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }" if (parenthesized_expression "(pcVar7 == FUN_001b8d10)" ( (binary_expression "pcVar7 == FUN_001b8d10" identifier == identifier) )) (compound_statement "{\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }" { (expression_statement "cVar3 = (**(code **)(lVar4 + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(lVar4 + 0x1d0))()" identifier = (call_expression "(**(code **)(lVar4 + 0x1d0))()" (parenthesized_expression "(**(code **)(lVar4 + 0x1d0))" ( (pointer_expression "**(code **)(lVar4 + 0x1d0)" * (pointer_expression "*(code **)(lVar4 + 0x1d0)" * (cast_expression "(code **)(lVar4 + 0x1d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x1d0)" ( (binary_expression "lVar4 + 0x1d0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n        cVar3 = (*pcVar7)();\n      }" else (compound_statement "{\n        cVar3 = (*pcVar7)();\n      }" { (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" identifier = (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar6 = *(ulong *)(puVar1 + 1);" (assignment_expression "uVar6 = *(ulong *)(puVar1 + 1)" identifier = (pointer_expression "*(ulong *)(puVar1 + 1)" * (cast_expression "(ulong *)(puVar1 + 1)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar1 + 3;" (assignment_expression "puVar8 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)((long)param_1 + 0x1c) = 8;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x1c) = 8" (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }" { (expression_statement "uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;" (assignment_expression "uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38" identifier = (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28" (binary_expression "uVar6 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar6 & 0xff000000000000)" ( (binary_expression "uVar6 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar6 & 0xff0000000000)" ( (binary_expression "uVar6 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00000000) >> 8" (parenthesized_expression "(uVar6 & 0xff00000000)" ( (binary_expression "uVar6 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff000000) << 8" (parenthesized_expression "(uVar6 & 0xff000000)" ( (binary_expression "uVar6 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar6 & 0xff0000) << 0x18" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar6 & 0xff00) << 0x28" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x38" identifier << number_literal))) ;) })) (expression_statement "param_1[7] = uVar6 + 0xc;" (assignment_expression "param_1[7] = uVar6 + 0xc" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (binary_expression "uVar6 + 0xc" identifier + number_literal)) ;) (expression_statement "lVar4 = **(long **)(*param_1 + 0x10);" (assignment_expression "lVar4 = **(long **)(*param_1 + 0x10)" identifier = (pointer_expression "**(long **)(*param_1 + 0x10)" * (pointer_expression "*(long **)(*param_1 + 0x10)" * (cast_expression "(long **)(*param_1 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) )))))) ;) (expression_statement "pcVar7 = *(code **)(lVar4 + 0x18);" (assignment_expression "pcVar7 = *(code **)(lVar4 + 0x18)" identifier = (pointer_expression "*(code **)(lVar4 + 0x18)" * (cast_expression "(code **)(lVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" else (compound_statement "{\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" { (expression_statement "*(undefined4 *)((long)param_1 + 0x1c) = 4;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x1c) = 4" (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_1[7] = uVar6 + 4;" (assignment_expression "param_1[7] = uVar6 + 4" (subscript_expression "param_1[7]" identifier [ number_literal ]) = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) }))) (expression_statement "puVar9 = (undefined1 *)(uVar6 + (long)puVar8);" (assignment_expression "puVar9 = (undefined1 *)(uVar6 + (long)puVar8)" identifier = (cast_expression "(undefined1 *)(uVar6 + (long)puVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (long)puVar8)" ( (binary_expression "uVar6 + (long)puVar8" identifier + (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (if_statement "if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }" if (parenthesized_expression "((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8))" ( (binary_expression "(undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)" (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) < (cast_expression "(undefined1 *)(uVar6 + (long)puVar8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (long)puVar8)" ( (binary_expression "uVar6 + (long)puVar8" identifier + (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n      puVar9 = (undefined1 *)param_1[2];\n    }" { (expression_statement "puVar9 = (undefined1 *)param_1[2];" (assignment_expression "puVar9 = (undefined1 *)param_1[2]" identifier = (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[5] = (long)puVar9;" (assignment_expression "param_1[5] = (long)puVar9" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }" if (parenthesized_expression "(pcVar7 == FUN_001b8d10)" ( (binary_expression "pcVar7 == FUN_001b8d10" identifier == identifier) )) (compound_statement "{\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }" { (expression_statement "cVar3 = (**(code **)(lVar4 + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(lVar4 + 0x1d0))()" identifier = (call_expression "(**(code **)(lVar4 + 0x1d0))()" (parenthesized_expression "(**(code **)(lVar4 + 0x1d0))" ( (pointer_expression "**(code **)(lVar4 + 0x1d0)" * (pointer_expression "*(code **)(lVar4 + 0x1d0)" * (cast_expression "(code **)(lVar4 + 0x1d0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x1d0)" ( (binary_expression "lVar4 + 0x1d0" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n      cVar3 = (*pcVar7)();\n    }" else (compound_statement "{\n      cVar3 = (*pcVar7)();\n    }" { (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" identifier = (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "sVar5 = (short)*puVar8;" (assignment_expression "sVar5 = (short)*puVar8" identifier = (cast_expression "(short)*puVar8" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }" { (expression_statement "sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));" (assignment_expression "sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" identifier = (call_expression "CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" identifier (argument_list "((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" ( (cast_expression "(char)*puVar8" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar8" * identifier)) , (pointer_expression "*(undefined1 *)((long)puVar8 + 1)" * (cast_expression "(undefined1 *)((long)puVar8 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 1)" ( (binary_expression "(long)puVar8 + 1" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) })) (if_statement "if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }" if (parenthesized_expression "(sVar5 == 2)" ( (binary_expression "sVar5 == 2" identifier == number_literal) )) (compound_statement "{\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }" { (expression_statement "(**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);" (call_expression "(**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8)" (parenthesized_expression "(**(code **)(*(long *)param_1[9] + 0x28))" ( (pointer_expression "**(code **)(*(long *)param_1[9] + 0x28)" * (pointer_expression "*(code **)(*(long *)param_1[9] + 0x28)" * (cast_expression "(code **)(*(long *)param_1[9] + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[9] + 0x28)" ( (binary_expression "*(long *)param_1[9] + 0x28" (pointer_expression "*(long *)param_1[9]" * (cast_expression "(long *)param_1[9]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8)" ( (cast_expression "(long *)param_1[9]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ])) , (cast_expression "(undefined1 *)((long)puVar8 + (2 - param_1[1]))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + (2 - param_1[1]))" ( (binary_expression "(long)puVar8 + (2 - param_1[1])" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(2 - param_1[1])" ( (binary_expression "2 - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) ))) ))) , (binary_expression "param_1 + 8" identifier + number_literal) ))) ;) (expression_statement "puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);" (assignment_expression "puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" identifier = (cast_expression "(undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" ( (binary_expression "(long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2" (binary_expression "(long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2)" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (call_expression "(ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(*(int *)((long)param_1 + 0x1c) * 2)" ( (binary_expression "*(int *)((long)param_1 + 0x1c) * 2" (pointer_expression "*(int *)((long)param_1 + 0x1c)" * (cast_expression "(int *)((long)param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1c)" ( (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) * number_literal) )))) + number_literal) )))) ;) (if_statement "if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }" if (parenthesized_expression "(puVar9 < (undefined1 *)param_1[2])" ( (binary_expression "puVar9 < (undefined1 *)param_1[2]" identifier < (cast_expression "(undefined1 *)param_1[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n        param_1[4] = (long)puVar9;\n        return 1;\n      }" { (expression_statement "param_1[4] = (long)puVar9;" (assignment_expression "param_1[4] = (long)puVar9" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (return_statement "return 1;" return number_literal ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (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 * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (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 IDENT + LIT) ))))) )) (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_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 IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (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 IDENT + LIT) ))))) )) (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (pointer_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 { (expression_statement (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 * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (subscript_expression IDENT [ LIT ])) ))) ))) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) * LIT) )))) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (return_statement return LIT ;) })) })) })) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_00301a50(long *param_1,long param_2)\n\n{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_00301a50(long *param_1,long param_2)" (identifier "FUN_00301a50") (parameter_list "(long *param_1,long param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  uint uVar2;\n  char cVar3;\n  long lVar4;\n  short sVar5;\n  ulong uVar6;\n  code *pcVar7;\n  uint *puVar8;\n  undefined1 *puVar9;\n  \n  lVar4 = param_1[1];\n  if (lVar4 == 0) {\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }\n  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "short sVar5;" (sized_type_specifier "short" (short "short")) (identifier "sVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (expression_statement "lVar4 = param_1[1];" (assignment_expression "lVar4 = param_1[1]" (identifier "lVar4") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (lVar4 == 0) {\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");\n  }" ({ "{") (expression_statement "FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");" (call_expression "FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header")" (identifier "FUN_001e9890") (argument_list "("../../gold/dwarf_reader.cc",0x22f,"read_header")" (( "(") (string_literal ""../../gold/dwarf_reader.cc"" (" """) (string_content "../../gold/dwarf_reader.cc") (" """)) (, ",") (number_literal "0x22f") (, ",") (string_literal ""read_header"" (" """) (string_content "read_header") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4))" (( "(") (binary_expression "(-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)" (parenthesized_expression "(-1 < param_2)" (( "(") (binary_expression "-1 < param_2" (number_literal "-1") (< "<") (identifier "param_2")) () ")")) (&& "&&") (parenthesized_expression "(param_2 + 0xe < param_1[2] - lVar4)" (( "(") (binary_expression "param_2 + 0xe < param_1[2] - lVar4" (binary_expression "param_2 + 0xe" (identifier "param_2") (+ "+") (number_literal "0xe")) (< "<") (binary_expression "param_1[2] - lVar4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (identifier "lVar4"))) () ")"))) () ")")) (compound_statement "{\n    puVar1 = (uint *)(lVar4 + param_2);\n    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    uVar2 = *puVar1;\n    puVar8 = puVar1 + 1;\n    if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }\n    lVar4 = **(long **)(*param_1 + 0x10);\n    uVar6 = (ulong)uVar2;\n    pcVar7 = *(code **)(lVar4 + 0x18);\n    if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }\n    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }\n    param_1[5] = (long)puVar9;\n    if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }\n    sVar5 = (short)*puVar8;\n    if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }\n    if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar1 = (uint *)(lVar4 + param_2);" (assignment_expression "puVar1 = (uint *)(lVar4 + param_2)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(lVar4 + param_2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + param_2)" (( "(") (binary_expression "lVar4 + param_2" (identifier "lVar4") (+ "+") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);" (assignment_expression "pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18)" (identifier "pcVar7") (= "=") (pointer_expression "*(code **)(**(long **)(*param_1 + 0x10) + 0x18)" (* "*") (cast_expression "(code **)(**(long **)(*param_1 + 0x10) + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(*param_1 + 0x10) + 0x18)" (( "(") (binary_expression "**(long **)(*param_1 + 0x10) + 0x18" (pointer_expression "**(long **)(*param_1 + 0x10)" (* "*") (pointer_expression "*(long **)(*param_1 + 0x10)" (* "*") (cast_expression "(long **)(*param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }" (if "if") (parenthesized_expression "(pcVar7 == FUN_001b8d10)" (( "(") (binary_expression "pcVar7 == FUN_001b8d10" (identifier "pcVar7") (== "==") (identifier "FUN_001b8d10")) () ")")) (compound_statement "{\n      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();\n    }" ({ "{") (expression_statement "cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))()" (identifier "cVar3") (= "=") (call_expression "(**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))()" (parenthesized_expression "(**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))" (( "(") (pointer_expression "**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" (* "*") (pointer_expression "*(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" (* "*") (cast_expression "(code **)(**(long **)(*param_1 + 0x10) + 0x1d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(*param_1 + 0x10) + 0x1d0)" (( "(") (binary_expression "**(long **)(*param_1 + 0x10) + 0x1d0" (pointer_expression "**(long **)(*param_1 + 0x10)" (* "*") (pointer_expression "*(long **)(*param_1 + 0x10)" (* "*") (cast_expression "(long **)(*param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0x1d0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      cVar3 = (*pcVar7)();\n    }" (else "else") (compound_statement "{\n      cVar3 = (*pcVar7)();\n    }" ({ "{") (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" (identifier "cVar3") (= "=") (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar2 = *puVar1;" (assignment_expression "uVar2 = *puVar1" (identifier "uVar2") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "puVar8 = puVar1 + 1;" (assignment_expression "puVar8 = puVar1 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar3 != '\0') {\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    }" ({ "{") (expression_statement "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (identifier "uVar2") (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "lVar4 = **(long **)(*param_1 + 0x10);" (assignment_expression "lVar4 = **(long **)(*param_1 + 0x10)" (identifier "lVar4") (= "=") (pointer_expression "**(long **)(*param_1 + 0x10)" (* "*") (pointer_expression "*(long **)(*param_1 + 0x10)" (* "*") (cast_expression "(long **)(*param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (expression_statement "uVar6 = (ulong)uVar2;" (assignment_expression "uVar6 = (ulong)uVar2" (identifier "uVar6") (= "=") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2"))) (; ";")) (expression_statement "pcVar7 = *(code **)(lVar4 + 0x18);" (assignment_expression "pcVar7 = *(code **)(lVar4 + 0x18)" (identifier "pcVar7") (= "=") (pointer_expression "*(code **)(lVar4 + 0x18)" (* "*") (cast_expression "(code **)(lVar4 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (uVar2 == 0xffffffff) {\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }\n    else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" (if "if") (parenthesized_expression "(uVar2 == 0xffffffff)" (( "(") (binary_expression "uVar2 == 0xffffffff" (identifier "uVar2") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }\n      uVar6 = *(ulong *)(puVar1 + 1);\n      puVar8 = puVar1 + 3;\n      *(undefined4 *)((long)param_1 + 0x1c) = 8;\n      if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }\n      param_1[7] = uVar6 + 0xc;\n      lVar4 = **(long **)(*param_1 + 0x10);\n      pcVar7 = *(code **)(lVar4 + 0x18);\n    }" ({ "{") (if_statement "if (pcVar7 == FUN_001b8d10) {\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }\n      else {\n        cVar3 = (*pcVar7)();\n      }" (if "if") (parenthesized_expression "(pcVar7 == FUN_001b8d10)" (( "(") (binary_expression "pcVar7 == FUN_001b8d10" (identifier "pcVar7") (== "==") (identifier "FUN_001b8d10")) () ")")) (compound_statement "{\n        cVar3 = (**(code **)(lVar4 + 0x1d0))();\n      }" ({ "{") (expression_statement "cVar3 = (**(code **)(lVar4 + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(lVar4 + 0x1d0))()" (identifier "cVar3") (= "=") (call_expression "(**(code **)(lVar4 + 0x1d0))()" (parenthesized_expression "(**(code **)(lVar4 + 0x1d0))" (( "(") (pointer_expression "**(code **)(lVar4 + 0x1d0)" (* "*") (pointer_expression "*(code **)(lVar4 + 0x1d0)" (* "*") (cast_expression "(code **)(lVar4 + 0x1d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x1d0)" (( "(") (binary_expression "lVar4 + 0x1d0" (identifier "lVar4") (+ "+") (number_literal "0x1d0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        cVar3 = (*pcVar7)();\n      }" (else "else") (compound_statement "{\n        cVar3 = (*pcVar7)();\n      }" ({ "{") (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" (identifier "cVar3") (= "=") (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar6 = *(ulong *)(puVar1 + 1);" (assignment_expression "uVar6 = *(ulong *)(puVar1 + 1)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(puVar1 + 1)" (* "*") (cast_expression "(ulong *)(puVar1 + 1)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "puVar8 = puVar1 + 3;" (assignment_expression "puVar8 = puVar1 + 3" (identifier "puVar8") (= "=") (binary_expression "puVar1 + 3" (identifier "puVar1") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "*(undefined4 *)((long)param_1 + 0x1c) = 8;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x1c) = 8" (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1c)" (( "(") (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "8")) (; ";")) (if_statement "if (cVar3 != '\0') {\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;\n      }" ({ "{") (expression_statement "uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38;" (assignment_expression "uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38" (identifier "uVar6") (= "=") (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |\n                uVar6 << 0x38" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |\n                (uVar6 & 0xff000000) << 8" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |\n                (uVar6 & 0xff0000000000) >> 0x18" (binary_expression "uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28" (binary_expression "uVar6 >> 0x38" (identifier "uVar6") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar6 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar6 & 0xff000000000000)" (( "(") (binary_expression "uVar6 & 0xff000000000000" (identifier "uVar6") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar6 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar6 & 0xff0000000000)" (( "(") (binary_expression "uVar6 & 0xff0000000000" (identifier "uVar6") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar6 & 0xff00000000) >> 8" (parenthesized_expression "(uVar6 & 0xff00000000)" (( "(") (binary_expression "uVar6 & 0xff00000000" (identifier "uVar6") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff000000) << 8" (parenthesized_expression "(uVar6 & 0xff000000)" (( "(") (binary_expression "uVar6 & 0xff000000" (identifier "uVar6") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff0000) << 0x18" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 0x28" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar6 << 0x38" (identifier "uVar6") (<< "<<") (number_literal "0x38")))) (; ";")) (} "}"))) (expression_statement "param_1[7] = uVar6 + 0xc;" (assignment_expression "param_1[7] = uVar6 + 0xc" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "lVar4 = **(long **)(*param_1 + 0x10);" (assignment_expression "lVar4 = **(long **)(*param_1 + 0x10)" (identifier "lVar4") (= "=") (pointer_expression "**(long **)(*param_1 + 0x10)" (* "*") (pointer_expression "*(long **)(*param_1 + 0x10)" (* "*") (cast_expression "(long **)(*param_1 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (expression_statement "pcVar7 = *(code **)(lVar4 + 0x18);" (assignment_expression "pcVar7 = *(code **)(lVar4 + 0x18)" (identifier "pcVar7") (= "=") (pointer_expression "*(code **)(lVar4 + 0x18)" (* "*") (cast_expression "(code **)(lVar4 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" (else "else") (compound_statement "{\n      *(undefined4 *)((long)param_1 + 0x1c) = 4;\n      param_1[7] = uVar6 + 4;\n    }" ({ "{") (expression_statement "*(undefined4 *)((long)param_1 + 0x1c) = 4;" (assignment_expression "*(undefined4 *)((long)param_1 + 0x1c) = 4" (pointer_expression "*(undefined4 *)((long)param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)((long)param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1c)" (( "(") (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "param_1[7] = uVar6 + 4;" (assignment_expression "param_1[7] = uVar6 + 4" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "uVar6 + 4" (identifier "uVar6") (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (expression_statement "puVar9 = (undefined1 *)(uVar6 + (long)puVar8);" (assignment_expression "puVar9 = (undefined1 *)(uVar6 + (long)puVar8)" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)(uVar6 + (long)puVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + (long)puVar8)" (( "(") (binary_expression "uVar6 + (long)puVar8" (identifier "uVar6") (+ "+") (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8"))) () ")")))) (; ";")) (if_statement "if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {\n      puVar9 = (undefined1 *)param_1[2];\n    }" (if "if") (parenthesized_expression "((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8))" (( "(") (binary_expression "(undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)" (cast_expression "(undefined1 *)param_1[2]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(undefined1 *)(uVar6 + (long)puVar8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + (long)puVar8)" (( "(") (binary_expression "uVar6 + (long)puVar8" (identifier "uVar6") (+ "+") (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8"))) () ")")))) () ")")) (compound_statement "{\n      puVar9 = (undefined1 *)param_1[2];\n    }" ({ "{") (expression_statement "puVar9 = (undefined1 *)param_1[2];" (assignment_expression "puVar9 = (undefined1 *)param_1[2]" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)param_1[2]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}"))) (expression_statement "param_1[5] = (long)puVar9;" (assignment_expression "param_1[5] = (long)puVar9" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9"))) (; ";")) (if_statement "if (pcVar7 == FUN_001b8d10) {\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }\n    else {\n      cVar3 = (*pcVar7)();\n    }" (if "if") (parenthesized_expression "(pcVar7 == FUN_001b8d10)" (( "(") (binary_expression "pcVar7 == FUN_001b8d10" (identifier "pcVar7") (== "==") (identifier "FUN_001b8d10")) () ")")) (compound_statement "{\n      cVar3 = (**(code **)(lVar4 + 0x1d0))();\n    }" ({ "{") (expression_statement "cVar3 = (**(code **)(lVar4 + 0x1d0))();" (assignment_expression "cVar3 = (**(code **)(lVar4 + 0x1d0))()" (identifier "cVar3") (= "=") (call_expression "(**(code **)(lVar4 + 0x1d0))()" (parenthesized_expression "(**(code **)(lVar4 + 0x1d0))" (( "(") (pointer_expression "**(code **)(lVar4 + 0x1d0)" (* "*") (pointer_expression "*(code **)(lVar4 + 0x1d0)" (* "*") (cast_expression "(code **)(lVar4 + 0x1d0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x1d0)" (( "(") (binary_expression "lVar4 + 0x1d0" (identifier "lVar4") (+ "+") (number_literal "0x1d0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      cVar3 = (*pcVar7)();\n    }" (else "else") (compound_statement "{\n      cVar3 = (*pcVar7)();\n    }" ({ "{") (expression_statement "cVar3 = (*pcVar7)();" (assignment_expression "cVar3 = (*pcVar7)()" (identifier "cVar3") (= "=") (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "sVar5 = (short)*puVar8;" (assignment_expression "sVar5 = (short)*puVar8" (identifier "sVar5") (= "=") (cast_expression "(short)*puVar8" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (if_statement "if (cVar3 != '\0') {\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));\n    }" ({ "{") (expression_statement "sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));" (assignment_expression "sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" (identifier "sVar5") (= "=") (call_expression "CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" (identifier "CONCAT11") (argument_list "((char)*puVar8,*(undefined1 *)((long)puVar8 + 1))" (( "(") (cast_expression "(char)*puVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (, ",") (pointer_expression "*(undefined1 *)((long)puVar8 + 1)" (* "*") (cast_expression "(undefined1 *)((long)puVar8 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + 1)" (( "(") (binary_expression "(long)puVar8 + 1" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (number_literal "1")) () ")")))) () ")")))) (; ";")) (} "}"))) (if_statement "if (sVar5 == 2) {\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }" (if "if") (parenthesized_expression "(sVar5 == 2)" (( "(") (binary_expression "sVar5 == 2" (identifier "sVar5") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      (**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);\n      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);\n      if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }\n    }" ({ "{") (expression_statement "(**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);" (call_expression "(**(code **)(*(long *)param_1[9] + 0x28))\n                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8)" (parenthesized_expression "(**(code **)(*(long *)param_1[9] + 0x28))" (( "(") (pointer_expression "**(code **)(*(long *)param_1[9] + 0x28)" (* "*") (pointer_expression "*(code **)(*(long *)param_1[9] + 0x28)" (* "*") (cast_expression "(code **)(*(long *)param_1[9] + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)param_1[9] + 0x28)" (( "(") (binary_expression "*(long *)param_1[9] + 0x28" (pointer_expression "*(long *)param_1[9]" (* "*") (cast_expression "(long *)param_1[9]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")))) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8)" (( "(") (cast_expression "(long *)param_1[9]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (, ",") (cast_expression "(undefined1 *)((long)puVar8 + (2 - param_1[1]))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + (2 - param_1[1]))" (( "(") (binary_expression "(long)puVar8 + (2 - param_1[1])" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (parenthesized_expression "(2 - param_1[1])" (( "(") (binary_expression "2 - param_1[1]" (number_literal "2") (- "-") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) () ")"))) () ")"))) (, ",") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))) (; ";")) (expression_statement "puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);" (assignment_expression "puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" (identifier "puVar9") (= "=") (cast_expression "(undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2)" (( "(") (binary_expression "(long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2" (binary_expression "(long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2)" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (call_expression "(ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(*(int *)((long)param_1 + 0x1c) * 2)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x1c) * 2" (pointer_expression "*(int *)((long)param_1 + 0x1c)" (* "*") (cast_expression "(int *)((long)param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1c)" (( "(") (binary_expression "(long)param_1 + 0x1c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")")))) (* "*") (number_literal "2")) () ")")))) (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (puVar9 < (undefined1 *)param_1[2]) {\n        param_1[4] = (long)puVar9;\n        return 1;\n      }" (if "if") (parenthesized_expression "(puVar9 < (undefined1 *)param_1[2])" (( "(") (binary_expression "puVar9 < (undefined1 *)param_1[2]" (identifier "puVar9") (< "<") (cast_expression "(undefined1 *)param_1[2]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n        param_1[4] = (long)puVar9;\n        return 1;\n      }" ({ "{") (expression_statement "param_1[4] = (long)puVar9;" (assignment_expression "param_1[4] = (long)puVar9" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* DWARF original prototype: bool read_header(Dwarf_pubnames_table * this, off_t offset) */

bool __thiscall gold::type_1::function_1(type_1 *this,type_2 var_3)

{
  type_3 *var_6;
  type_3 var_8;
  char var_7;
  int iVar4;
  type_4 **pp_Var5;
  type_5 return_value;
  short var_11;
  type_5 return_value_1;
  type_6 var_9;
  type_4 *var_4;
  type_3 *puVar9;
  type_7 *var_1;
  
  var_1 = this->buffer_;
  if (var_1 == (type_7 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/dwarf_reader.cc",0x22f,"read_header");
  }
  if ((-1 < var_3) && (var_3 + 0xe < (long)this->buffer_end_ - (long)var_1)) {
    var_6 = (type_3 *)(var_1 + var_3);
    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;
    var_4 = pp_Var5[3];
    if (var_4 == var_5::is_big_endian) {
      iVar4 = (*pp_Var5[0x3a])();
      var_7 = (char)iVar4;
    }
    else {
      iVar4 = (*var_4)();
      var_7 = (char)iVar4;
    }
    var_8 = *var_6;
    puVar9 = var_6 + 1;
    if (var_7 != '\0') {
      var_8 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
    }
    pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;
    var_9 = (type_6)var_8;
    var_4 = pp_Var5[3];
    if (var_8 == 0xffffffff) {
      if (var_4 == var_5::is_big_endian) {
        iVar4 = (*pp_Var5[0x3a])();
        var_7 = (char)iVar4;
      }
      else {
        iVar4 = (*var_4)();
        var_7 = (char)iVar4;
      }
      var_9 = *(type_6 *)(var_6 + 1);
      puVar9 = var_6 + 3;
      this->offset_size_ = 8;
      if (var_7 != '\0') {
        var_9 = var_9 >> 0x38 | (var_9 & 0xff000000000000) >> 0x28 |
                (var_9 & 0xff0000000000) >> 0x18 | (var_9 & 0xff00000000) >> 8 |
                (var_9 & 0xff000000) << 8 | (var_9 & 0xff0000) << 0x18 | (var_9 & 0xff00) << 0x28 |
                var_9 << 0x38;
      }
      this->unit_length_ = var_9 + 0xc;
      pp_Var5 = (this->dwinfo_->object_->super_Object)._vptr_Object;
      var_4 = pp_Var5[3];
    }
    else {
      this->offset_size_ = 4;
      this->unit_length_ = var_9 + 4;
    }
    var_1 = (type_7 *)(var_9 + (long)puVar9);
    if (this->buffer_end_ < (type_7 *)(var_9 + (long)puVar9)) {
      var_1 = this->buffer_end_;
    }
    this->end_of_table_ = var_1;
    if (var_4 == var_5::is_big_endian) {
      iVar4 = (*pp_Var5[0x3a])();
      var_7 = (char)iVar4;
    }
    else {
      iVar4 = (*var_4)();
      var_7 = (char)iVar4;
    }
    var_11 = (short)*puVar9;
    if (var_7 != '\0') {
      var_11 = var_10((char)*puVar9,*(type_8 *)((long)puVar9 + 1));
    }
    if (var_11 == 2) {
      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])
                (this->reloc_mapper_,(type_8 *)((long)puVar9 + (2 - (long)this->buffer_)),
                 &this->cu_offset_);
      var_1 = (type_7 *)((long)puVar9 + (type_6)(this->offset_size_ * 2) + 2);
      if (var_1 < this->buffer_end_) {
        this->pinfo_ = var_1;
        return true;
      }
    }
  }
  return false;
}


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

undefined8 MASKED(long *param_1,long param_2)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  long lVar4;
  short sVar5;
  ulong uVar6;
  code *pcVar7;
  uint *puVar8;
  undefined1 *puVar9;
  
  lVar4 = param_1[1];
  if (lVar4 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/dwarf_reader.cc",0x22f,"read_header");
  }
  if ((-1 < param_2) && (param_2 + 0xe < param_1[2] - lVar4)) {
    puVar1 = (uint *)(lVar4 + param_2);
    pcVar7 = *(code **)(**(long **)(*param_1 + 0x10) + 0x18);
    if (pcVar7 == FUN_001b8d10) {
      cVar3 = (**(code **)(**(long **)(*param_1 + 0x10) + 0x1d0))();
    }
    else {
      cVar3 = (*pcVar7)();
    }
    uVar2 = *puVar1;
    puVar8 = puVar1 + 1;
    if (cVar3 != '\0') {
      uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    }
    lVar4 = **(long **)(*param_1 + 0x10);
    uVar6 = (ulong)uVar2;
    pcVar7 = *(code **)(lVar4 + 0x18);
    if (uVar2 == 0xffffffff) {
      if (pcVar7 == FUN_001b8d10) {
        cVar3 = (**(code **)(lVar4 + 0x1d0))();
      }
      else {
        cVar3 = (*pcVar7)();
      }
      uVar6 = *(ulong *)(puVar1 + 1);
      puVar8 = puVar1 + 3;
      *(undefined4 *)((long)param_1 + 0x1c) = 8;
      if (cVar3 != '\0') {
        uVar6 = uVar6 >> 0x38 | (uVar6 & 0xff000000000000) >> 0x28 |
                (uVar6 & 0xff0000000000) >> 0x18 | (uVar6 & 0xff00000000) >> 8 |
                (uVar6 & 0xff000000) << 8 | (uVar6 & 0xff0000) << 0x18 | (uVar6 & 0xff00) << 0x28 |
                uVar6 << 0x38;
      }
      param_1[7] = uVar6 + 0xc;
      lVar4 = **(long **)(*param_1 + 0x10);
      pcVar7 = *(code **)(lVar4 + 0x18);
    }
    else {
      *(undefined4 *)((long)param_1 + 0x1c) = 4;
      param_1[7] = uVar6 + 4;
    }
    puVar9 = (undefined1 *)(uVar6 + (long)puVar8);
    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar6 + (long)puVar8)) {
      puVar9 = (undefined1 *)param_1[2];
    }
    param_1[5] = (long)puVar9;
    if (pcVar7 == FUN_001b8d10) {
      cVar3 = (**(code **)(lVar4 + 0x1d0))();
    }
    else {
      cVar3 = (*pcVar7)();
    }
    sVar5 = (short)*puVar8;
    if (cVar3 != '\0') {
      sVar5 = CONCAT11((char)*puVar8,*(undefined1 *)((long)puVar8 + 1));
    }
    if (sVar5 == 2) {
      (**(code **)(*(long *)param_1[9] + 0x28))
                ((long *)param_1[9],(undefined1 *)((long)puVar8 + (2 - param_1[1])),param_1 + 8);
      puVar9 = (undefined1 *)((long)puVar8 + (ulong)(uint)(*(int *)((long)param_1 + 0x1c) * 2) + 2);
      if (puVar9 < (undefined1 *)param_1[2]) {
        param_1[4] = (long)puVar9;
        return 1;
      }
    }
  }
  return 0;
}

