
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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;
  _func_int_varargs *p_Var2;
  uint uVar3;
  Dwarf_info_reader *pDVar4;
  char cVar5;
  uint uVar6;
  undefined1 *puVar8;
  uint uVar9;
  Valtype return_value;
  uchar *puVar10;
  short sVar11;
  Relobj *pRVar12;
  int iVar13;
  int iVar14;
  _func_int_varargs **pp_Var15;
  uint *local_34;
  _func_int_varargs *local_2c;
  int iVar7;
  
  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) &&
     (iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),
     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,
     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,
     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)) {
    puVar1 = (uint *)(puVar10 + (int)offset);
    pRVar12 = this->dwinfo_->object_;
    pp_Var15 = (pRVar12->super_Object)._vptr_Object;
    p_Var2 = pp_Var15[3];
    if (p_Var2 == Relobj::is_big_endian) {
      iVar7 = (*pp_Var15[0x3a])(pRVar12);
      cVar5 = (char)iVar7;
    }
    else {
      iVar7 = (*p_Var2)(pRVar12);
      cVar5 = (char)iVar7;
    }
    uVar6 = *puVar1;
    local_34 = puVar1 + 1;
    if (cVar5 != '\0') {
      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
    }
    pRVar12 = this->dwinfo_->object_;
    pp_Var15 = (pRVar12->super_Object)._vptr_Object;
    local_2c = pp_Var15[3];
    if (uVar6 == 0xffffffff) {
      if (local_2c == Relobj::is_big_endian) {
        iVar7 = (*pp_Var15[0x3a])(pRVar12);
        cVar5 = (char)iVar7;
      }
      else {
        iVar7 = (*local_2c)(pRVar12);
        cVar5 = (char)iVar7;
      }
      uVar3 = puVar1[1];
      uVar9 = puVar1[2];
      uVar6 = uVar3;
      if (cVar5 != '\0') {
        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;
        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
      }
      this->offset_size_ = 8;
      *(uint *)&this->unit_length_ = uVar6 + 0xc;
      local_34 = puVar1 + 3;
      pDVar4 = this->dwinfo_;
      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);
      pRVar12 = pDVar4->object_;
      pp_Var15 = (pRVar12->super_Object)._vptr_Object;
      local_2c = pp_Var15[3];
    }
    else {
      this->offset_size_ = 4;
      *(uint *)&this->unit_length_ = uVar6 + 4;
      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);
    }
    puVar10 = (uchar *)(uVar6 + (int)local_34);
    if (this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)) {
      puVar10 = this->buffer_end_;
    }
    this->end_of_table_ = puVar10;
    if (local_2c == Relobj::is_big_endian) {
      iVar7 = (*pp_Var15[0x3a])(pRVar12);
      cVar5 = (char)iVar7;
    }
    else {
      iVar7 = (*local_2c)(pRVar12);
      cVar5 = (char)iVar7;
    }
    sVar11 = (short)*local_34;
    if (cVar5 != '\0') {
      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));
    }
    if (sVar11 == 2) {
      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));
      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])
                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);
      puVar10 = (uchar *)((int)local_34 + this->offset_size_ * 2 + 2);
      if (puVar10 < this->buffer_end_) {
        this->pinfo_ = puVar10;
        return true;
      }
    }
  }
  return false;
}



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

undefined4 FUN_001bcfb0(int *param_1,uint param_2,int param_3)

{
  uint *puVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  char cVar5;
  undefined1 *puVar6;
  uint uVar7;
  short sVar8;
  int *piVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint *local_34;
  code *local_2c;
  
  iVar12 = param_1[1];
  if (iVar12 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);
  }
  if ((-1 < param_3) &&
     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,
     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,
     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {
    puVar1 = (uint *)(iVar12 + param_2);
    piVar9 = *(int **)(*param_1 + 8);
    pcVar2 = *(code **)(*piVar9 + 0xc);
    if (pcVar2 == FUN_00084390) {
      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);
    }
    else {
      cVar5 = (*pcVar2)(piVar9);
    }
    uVar10 = *puVar1;
    local_34 = puVar1 + 1;
    if (cVar5 != '\0') {
      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;
    }
    piVar9 = *(int **)(*param_1 + 8);
    iVar12 = *piVar9;
    local_2c = *(code **)(iVar12 + 0xc);
    if (uVar10 == 0xffffffff) {
      if (local_2c == FUN_00084390) {
        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);
      }
      else {
        cVar5 = (*local_2c)(piVar9);
      }
      uVar3 = puVar1[1];
      uVar7 = puVar1[2];
      uVar10 = uVar3;
      if (cVar5 != '\0') {
        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
      }
      param_1[4] = 8;
      param_1[8] = uVar10 + 0xc;
      local_34 = puVar1 + 3;
      param_1[9] = uVar7 + (0xfffffff3 < uVar10);
      piVar9 = *(int **)(*param_1 + 8);
      iVar12 = *piVar9;
      local_2c = *(code **)(iVar12 + 0xc);
    }
    else {
      param_1[4] = 4;
      param_1[8] = uVar10 + 4;
      param_1[9] = (uint)(0xfffffffb < uVar10);
    }
    puVar6 = (undefined1 *)(uVar10 + (int)local_34);
    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {
      puVar6 = (undefined1 *)param_1[2];
    }
    param_1[6] = (int)puVar6;
    if (local_2c == FUN_00084390) {
      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);
    }
    else {
      cVar5 = (*local_2c)(piVar9);
    }
    sVar8 = (short)*local_34;
    if (cVar5 != '\0') {
      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));
    }
    if (sVar8 == 2) {
      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));
      (**(code **)(*(int *)param_1[0xc] + 0x14))
                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);
      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);
      if (puVar6 < (undefined1 *)param_1[2]) {
        param_1[5] = (int)puVar6;
        return 1;
      }
    }
  }
  return 0;
}


CALL 0x0006206b
ADD EAX,0x1ed04b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV EBP,dword ptr [ESP + 0x40]
MOV ECX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x1c],EAX
MOV EBX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [EBP + 0x4]
TEST EDX,EDX
JZ 0x001bd1d2
TEST EBX,EBX
JS 0x001bd016
MOV ESI,ECX
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,EBX
ADD ESI,0xe
ADC EDI,0x0
SUB EAX,EDX
MOV dword ptr [ESP + 0x8],ESI
MOV ESI,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,EAX
SAR EDI,0x1f
MOV dword ptr [ESP + 0x10],EAX
CMP ESI,EAX
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,dword ptr [ESP + 0xc]
MOV EAX,EDI
SBB EAX,dword ptr [ESP + 0x14]
JL 0x001bd020
ADD ESP,0x2c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP]
LEA ESI,[EDX + ECX*0x1]
MOV EDI,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX + 0x8]
LEA EBX,[EDI + 0xffcda390]
MOV dword ptr [ESP + 0x1c],EBX
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EDX + 0xc]
CMP ECX,EBX
JNZ 0x001bd1b0
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0xe8]
ADD ESP,0x10
MOV ECX,dword ptr [ESI]
TEST AL,AL
LEA EAX,[ESI + 0x4]
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [EBP]
MOV EDX,ECX
BSWAP EDX
CMOVNZ ECX,EDX
MOV EDX,dword ptr [EAX + 0x8]
MOV EDI,dword ptr [EDX]
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [ESP + 0x10],EAX
CMP ECX,-0x1
JZ 0x001bd130
MOV EBX,ECX
XOR ESI,ESI
MOV dword ptr [EBP + 0x10],0x4
ADD EBX,0x4
ADC ESI,0x0
MOV dword ptr [EBP + 0x20],EBX
MOV dword ptr [EBP + 0x24],ESI
MOV EAX,dword ptr [EBP + 0x8]
ADD ECX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESP + 0x1c]
CMP ECX,EAX
CMOVA ECX,EAX
MOV dword ptr [EBP + 0x18],ECX
CMP dword ptr [ESP + 0x10],EBX
JNZ 0x001bd198
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EDI + 0xe8]
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x8]
MOVZX EDX,byte ptr [EBX + 0x1]
MOVZX ECX,byte ptr [EBX]
TEST AL,AL
JNZ 0x001bd120
SHL EDX,0x8
OR EDX,ECX
CMP DX,0x2
JNZ 0x001bd016
MOV EBX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [EBP + 0x30]
LEA EAX,[EBP + 0x28]
ADD EBX,0x2
MOV ESI,dword ptr [ECX]
PUSH EAX
MOV EAX,EBX
SUB EAX,dword ptr [EBP + 0x4]
CDQ
PUSH EDX
PUSH EAX
PUSH ECX
CALL dword ptr [ESI + 0x14]
MOV EAX,dword ptr [EBP + 0x10]
ADD ESP,0x10
LEA EAX,[EBX + EAX*0x2]
CMP dword ptr [EBP + 0x8],EAX
JBE 0x001bd016
MOV dword ptr [EBP + 0x14],EAX
ADD ESP,0x2c
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
SHL ECX,0x8
OR EDX,ECX
JMP 0x001bd0d8
MOV EBX,dword ptr [ESP + 0x1c]
CMP EAX,EBX
JNZ 0x001bd1c0
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EDI + 0xe8]
ADD ESP,0x10
MOV ECX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESI + 0x8]
TEST AL,AL
JZ 0x001bd15f
MOV EAX,ECX
MOV EDX,EBX
BSWAP EDX
BSWAP EAX
MOV ECX,EDX
MOV EBX,EAX
MOV EAX,ECX
MOV EDX,EBX
MOV dword ptr [EBP + 0x10],0x8
ADD EAX,0xc
MOV dword ptr [EBP + 0x20],EAX
LEA EAX,[ESI + 0xc]
ADC EDX,0x0
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [EBP + 0x24],EDX
MOV EDX,dword ptr [EAX + 0x8]
MOV EDI,dword ptr [EDX]
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [ESP + 0x10],EAX
JMP 0x001bd09a
SUB ESP,0xc
PUSH EDX
MOV EAX,dword ptr [ESP + 0x20]
CALL EAX
ADD ESP,0x10
JMP 0x001bd0c4
SUB ESP,0xc
PUSH EAX
CALL ECX
ADD ESP,0x10
JMP 0x001bd051
SUB ESP,0xc
PUSH EDX
MOV EAX,dword ptr [ESP + 0x20]
CALL EAX
ADD ESP,0x10
JMP 0x001bd149
PUSH EAX
MOV EBX,dword ptr [ESP + 0x20]
LEA EAX,[EBX + 0xfff0d384]
PUSH EAX
LEA EAX,[EBX + 0xfff0d005]
PUSH 0x22f
PUSH EAX
CALL 0x0007ac80
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined4 FUN_001bcfb0(int *param_1,uint param_2,int param_3)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_001bcfb0(int *param_1,uint param_2,int param_3)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_001bcfb0(int *param_1,uint param_2,int param_3)" identifier (parameter_list "(int *param_1,uint param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "short sVar8;" (sized_type_specifier "short" short) identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "code *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "iVar12 = param_1[1];" (assignment_expression "iVar12 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }" { comment (expression_statement "FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);" (call_expression "FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT)" identifier (argument_list "("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT)" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""read_header"" " string_content ") , (pointer_expression "&__DT_PLTGOT" & identifier) ))) ;) })) (if_statement "if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0))" ( (binary_expression "(-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)" (parenthesized_expression "(-1 < param_3)" ( (binary_expression "-1 < param_3" number_literal < identifier) )) && (parenthesized_expression "(param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)" ( (comma_expression "param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "param_3 = param_3 + (uint)(0xfffffff1 < param_2)" identifier = (binary_expression "param_3 + (uint)(0xfffffff1 < param_2)" identifier + (call_expression "(uint)(0xfffffff1 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffff1 < param_2)" ( (binary_expression "0xfffffff1 < param_2" number_literal < identifier) ))))) , (comma_expression "iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "iVar11 = param_1[2] - iVar12 >> 0x1f" identifier = (binary_expression "param_1[2] - iVar12 >> 0x1f" (binary_expression "param_1[2] - iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier) >> number_literal)) , (comma_expression "uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12))" identifier = (call_expression "(uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 0xe < (uint)(param_1[2] - iVar12))" ( (binary_expression "param_2 + 0xe < (uint)(param_1[2] - iVar12)" (binary_expression "param_2 + 0xe" identifier + number_literal) < (call_expression "(uint)(param_1[2] - iVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] - iVar12)" ( (binary_expression "param_1[2] - iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier) )))) )))) , (comma_expression "iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "iVar4 = param_3 - iVar11" identifier = (binary_expression "param_3 - iVar11" identifier - identifier)) , (binary_expression "(SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (parenthesized_expression "(SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10))" ( (binary_expression "SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)" (call_expression "SBORROW4(param_3,iVar11)" identifier (argument_list "(param_3,iVar11)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar4,uVar10)" identifier (argument_list "(iVar4,uVar10)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar4 - uVar10) < 0" (cast_expression "(int)(iVar4 - uVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar10)" ( (binary_expression "iVar4 - uVar10" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }" { (expression_statement "puVar1 = (uint *)(iVar12 + param_2);" (assignment_expression "puVar1 = (uint *)(iVar12 + param_2)" identifier = (cast_expression "(uint *)(iVar12 + param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + param_2)" ( (binary_expression "iVar12 + param_2" identifier + identifier) )))) ;) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(*piVar9 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar9 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar9 + 0xc)" * (cast_expression "(code **)(*piVar9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 0xc)" ( (binary_expression "*piVar9 + 0xc" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }" if (parenthesized_expression "(pcVar2 == FUN_00084390)" ( (binary_expression "pcVar2 == FUN_00084390" identifier == identifier) )) (compound_statement "{\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }" { (expression_statement "cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9)" identifier = (call_expression "(**(code **)(*piVar9 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(*piVar9 + 0xe8))" ( (pointer_expression "**(code **)(*piVar9 + 0xe8)" * (pointer_expression "*(code **)(*piVar9 + 0xe8)" * (cast_expression "(code **)(*piVar9 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 0xe8)" ( (binary_expression "*piVar9 + 0xe8" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) )) (argument_list "(piVar9)" ( identifier )))) ;) }) (else_clause "else {\n      cVar5 = (*pcVar2)(piVar9);\n    }" else (compound_statement "{\n      cVar5 = (*pcVar2)(piVar9);\n    }" { (expression_statement "cVar5 = (*pcVar2)(piVar9);" (assignment_expression "cVar5 = (*pcVar2)(piVar9)" identifier = (call_expression "(*pcVar2)(piVar9)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(piVar9)" ( identifier )))) ;) }))) (expression_statement "uVar10 = *puVar1;" (assignment_expression "uVar10 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }" { (expression_statement "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;" (assignment_expression "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) })) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar12 = *piVar9;" (assignment_expression "iVar12 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "local_2c = *(code **)(iVar12 + 0xc);" (assignment_expression "local_2c = *(code **)(iVar12 + 0xc)" identifier = (pointer_expression "*(code **)(iVar12 + 0xc)" * (cast_expression "(code **)(iVar12 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }" { (if_statement "if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }" if (parenthesized_expression "(local_2c == FUN_00084390)" ( (binary_expression "local_2c == FUN_00084390" identifier == identifier) )) (compound_statement "{\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }" { (expression_statement "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9)" identifier = (call_expression "(**(code **)(iVar12 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(iVar12 + 0xe8))" ( (pointer_expression "**(code **)(iVar12 + 0xe8)" * (pointer_expression "*(code **)(iVar12 + 0xe8)" * (cast_expression "(code **)(iVar12 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xe8)" ( (binary_expression "iVar12 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar9)" ( identifier )))) ;) }) (else_clause "else {\n        cVar5 = (*local_2c)(piVar9);\n      }" else (compound_statement "{\n        cVar5 = (*local_2c)(piVar9);\n      }" { (expression_statement "cVar5 = (*local_2c)(piVar9);" (assignment_expression "cVar5 = (*local_2c)(piVar9)" identifier = (call_expression "(*local_2c)(piVar9)" (parenthesized_expression "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) )) (argument_list "(piVar9)" ( identifier )))) ;) }))) (expression_statement "uVar3 = puVar1[1];" (assignment_expression "uVar3 = puVar1[1]" identifier = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar1[2];" (assignment_expression "uVar7 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = uVar3;" (assignment_expression "uVar10 = uVar3" identifier = identifier) ;) (if_statement "if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" { (expression_statement "uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) })) (expression_statement "param_1[4] = 8;" (assignment_expression "param_1[4] = 8" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = uVar10 + 0xc;" (assignment_expression "param_1[8] = uVar10 + 0xc" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "uVar10 + 0xc" identifier + number_literal)) ;) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "param_1[9] = uVar7 + (0xfffffff3 < uVar10);" (assignment_expression "param_1[9] = uVar7 + (0xfffffff3 < uVar10)" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (binary_expression "uVar7 + (0xfffffff3 < uVar10)" identifier + (parenthesized_expression "(0xfffffff3 < uVar10)" ( (binary_expression "0xfffffff3 < uVar10" number_literal < identifier) )))) ;) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar12 = *piVar9;" (assignment_expression "iVar12 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "local_2c = *(code **)(iVar12 + 0xc);" (assignment_expression "local_2c = *(code **)(iVar12 + 0xc)" identifier = (pointer_expression "*(code **)(iVar12 + 0xc)" * (cast_expression "(code **)(iVar12 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" else (compound_statement "{\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" { (expression_statement "param_1[4] = 4;" (assignment_expression "param_1[4] = 4" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = uVar10 + 4;" (assignment_expression "param_1[8] = uVar10 + 4" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "uVar10 + 4" identifier + number_literal)) ;) (expression_statement "param_1[9] = (uint)(0xfffffffb < uVar10);" (assignment_expression "param_1[9] = (uint)(0xfffffffb < uVar10)" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (call_expression "(uint)(0xfffffffb < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffb < uVar10)" ( (binary_expression "0xfffffffb < uVar10" number_literal < identifier) )))) ;) }))) (expression_statement "puVar6 = (undefined1 *)(uVar10 + (int)local_34);" (assignment_expression "puVar6 = (undefined1 *)(uVar10 + (int)local_34)" identifier = (cast_expression "(undefined1 *)(uVar10 + (int)local_34)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + (int)local_34)" ( (binary_expression "uVar10 + (int)local_34" identifier + (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }" if (parenthesized_expression "((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34))" ( (binary_expression "(undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)" (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 *)(uVar10 + (int)local_34)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + (int)local_34)" ( (binary_expression "uVar10 + (int)local_34" identifier + (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      puVar6 = (undefined1 *)param_1[2];\n    }" { (expression_statement "puVar6 = (undefined1 *)param_1[2];" (assignment_expression "puVar6 = (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[6] = (int)puVar6;" (assignment_expression "param_1[6] = (int)puVar6" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }" if (parenthesized_expression "(local_2c == FUN_00084390)" ( (binary_expression "local_2c == FUN_00084390" identifier == identifier) )) (compound_statement "{\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }" { (expression_statement "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9)" identifier = (call_expression "(**(code **)(iVar12 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(iVar12 + 0xe8))" ( (pointer_expression "**(code **)(iVar12 + 0xe8)" * (pointer_expression "*(code **)(iVar12 + 0xe8)" * (cast_expression "(code **)(iVar12 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xe8)" ( (binary_expression "iVar12 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar9)" ( identifier )))) ;) }) (else_clause "else {\n      cVar5 = (*local_2c)(piVar9);\n    }" else (compound_statement "{\n      cVar5 = (*local_2c)(piVar9);\n    }" { (expression_statement "cVar5 = (*local_2c)(piVar9);" (assignment_expression "cVar5 = (*local_2c)(piVar9)" identifier = (call_expression "(*local_2c)(piVar9)" (parenthesized_expression "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) )) (argument_list "(piVar9)" ( identifier )))) ;) }))) (expression_statement "sVar8 = (short)*local_34;" (assignment_expression "sVar8 = (short)*local_34" identifier = (cast_expression "(short)*local_34" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*local_34" * identifier))) ;) (if_statement "if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" { (expression_statement "sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));" (assignment_expression "sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" identifier = (call_expression "CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" identifier (argument_list "((char)*local_34,*(undefined1 *)((int)local_34 + 1))" ( (cast_expression "(char)*local_34" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_34" * identifier)) , (pointer_expression "*(undefined1 *)((int)local_34 + 1)" * (cast_expression "(undefined1 *)((int)local_34 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + 1)" ( (binary_expression "(int)local_34 + 1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })) (if_statement "if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }" if (parenthesized_expression "(sVar8 == 2)" ( (binary_expression "sVar8 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }" { (expression_statement "puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));" (assignment_expression "puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]))" identifier = (cast_expression "(undefined1 *)((int)local_34 + (2 - param_1[1]))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + (2 - param_1[1]))" ( (binary_expression "(int)local_34 + (2 - param_1[1])" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(2 - param_1[1])" ( (binary_expression "2 - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) ))) )))) ;) (expression_statement "(**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);" (call_expression "(**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10)" (parenthesized_expression "(**(code **)(*(int *)param_1[0xc] + 0x14))" ( (pointer_expression "**(code **)(*(int *)param_1[0xc] + 0x14)" * (pointer_expression "*(code **)(*(int *)param_1[0xc] + 0x14)" * (cast_expression "(code **)(*(int *)param_1[0xc] + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0xc] + 0x14)" ( (binary_expression "*(int *)param_1[0xc] + 0x14" (pointer_expression "*(int *)param_1[0xc]" * (cast_expression "(int *)param_1[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10)" ( (cast_expression "(int *)param_1[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])) , identifier , (binary_expression "(int)puVar6 >> 0x1f" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (binary_expression "param_1 + 10" identifier + number_literal) ))) ;) (expression_statement "puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);" (assignment_expression "puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2)" identifier = (cast_expression "(undefined1 *)((int)local_34 + param_1[4] * 2 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + param_1[4] * 2 + 2)" ( (binary_expression "(int)local_34 + param_1[4] * 2 + 2" (binary_expression "(int)local_34 + param_1[4] * 2" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "param_1[4] * 2" (subscript_expression "param_1[4]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) ;) (if_statement "if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }" if (parenthesized_expression "(puVar6 < (undefined1 *)param_1[2])" ( (binary_expression "puVar6 < (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[5] = (int)puVar6;\n        return 1;\n      }" { (expression_statement "param_1[5] = (int)puVar6;" (assignment_expression "param_1[5] = (int)puVar6" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return 1;" return number_literal ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* 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  _func_int_varargs *p_Var2;\n  uint uVar3;\n  Dwarf_info_reader *pDVar4;\n  char cVar5;\n  uint uVar6;\n  undefined1 *puVar8;\n  uint uVar9;\n  Valtype return_value;\n  uchar *puVar10;\n  short sVar11;\n  Relobj *pRVar12;\n  int iVar13;\n  int iVar14;\n  _func_int_varargs **pp_Var15;\n  uint *local_34;\n  _func_int_varargs *local_2c;\n  int iVar7;\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) &&\n     (iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)) {\n    puVar1 = (uint *)(puVar10 + (int)offset);\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    p_Var2 = pp_Var15[3];\n    if (p_Var2 == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    uVar6 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    }\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    local_2c = pp_Var15[3];\n    if (uVar6 == 0xffffffff) {\n      if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      uVar3 = puVar1[1];\n      uVar9 = puVar1[2];\n      uVar6 = uVar3;\n      if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      this->offset_size_ = 8;\n      *(uint *)&this->unit_length_ = uVar6 + 0xc;\n      local_34 = puVar1 + 3;\n      pDVar4 = this->dwinfo_;\n      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);\n      pRVar12 = pDVar4->object_;\n      pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n      local_2c = pp_Var15[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\n    }\n    puVar10 = (uchar *)(uVar6 + (int)local_34);\n    if (this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (local_2c == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    sVar11 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar11 == 2) {\n      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);\n      puVar10 = (uchar *)((int)local_34 + 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 comment (function_definition "bool __thiscall gold::Dwarf_pubnames_table::read_header(Dwarf_pubnames_table *this,off_t offset)\n\n{\n  uint *puVar1;\n  _func_int_varargs *p_Var2;\n  uint uVar3;\n  Dwarf_info_reader *pDVar4;\n  char cVar5;\n  uint uVar6;\n  undefined1 *puVar8;\n  uint uVar9;\n  Valtype return_value;\n  uchar *puVar10;\n  short sVar11;\n  Relobj *pRVar12;\n  int iVar13;\n  int iVar14;\n  _func_int_varargs **pp_Var15;\n  uint *local_34;\n  _func_int_varargs *local_2c;\n  int iVar7;\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) &&\n     (iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)) {\n    puVar1 = (uint *)(puVar10 + (int)offset);\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    p_Var2 = pp_Var15[3];\n    if (p_Var2 == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    uVar6 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    }\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    local_2c = pp_Var15[3];\n    if (uVar6 == 0xffffffff) {\n      if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      uVar3 = puVar1[1];\n      uVar9 = puVar1[2];\n      uVar6 = uVar3;\n      if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      this->offset_size_ = 8;\n      *(uint *)&this->unit_length_ = uVar6 + 0xc;\n      local_34 = puVar1 + 3;\n      pDVar4 = this->dwinfo_;\n      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);\n      pRVar12 = pDVar4->object_;\n      pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n      local_2c = pp_Var15[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\n    }\n    puVar10 = (uchar *)(uVar6 + (int)local_34);\n    if (this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (local_2c == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    sVar11 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar11 == 2) {\n      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);\n      puVar10 = (uchar *)((int)local_34 + 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  _func_int_varargs *p_Var2;\n  uint uVar3;\n  Dwarf_info_reader *pDVar4;\n  char cVar5;\n  uint uVar6;\n  undefined1 *puVar8;\n  uint uVar9;\n  Valtype return_value;\n  uchar *puVar10;\n  short sVar11;\n  Relobj *pRVar12;\n  int iVar13;\n  int iVar14;\n  _func_int_varargs **pp_Var15;\n  uint *local_34;\n  _func_int_varargs *local_2c;\n  int iVar7;\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) &&\n     (iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)) {\n    puVar1 = (uint *)(puVar10 + (int)offset);\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    p_Var2 = pp_Var15[3];\n    if (p_Var2 == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    uVar6 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    }\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    local_2c = pp_Var15[3];\n    if (uVar6 == 0xffffffff) {\n      if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      uVar3 = puVar1[1];\n      uVar9 = puVar1[2];\n      uVar6 = uVar3;\n      if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      this->offset_size_ = 8;\n      *(uint *)&this->unit_length_ = uVar6 + 0xc;\n      local_34 = puVar1 + 3;\n      pDVar4 = this->dwinfo_;\n      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);\n      pRVar12 = pDVar4->object_;\n      pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n      local_2c = pp_Var15[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\n    }\n    puVar10 = (uchar *)(uVar6 + (int)local_34);\n    if (this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (local_2c == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    sVar11 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar11 == 2) {\n      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);\n      puVar10 = (uchar *)((int)local_34 + 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 "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "Dwarf_info_reader *pDVar4;" type_identifier (pointer_declarator "*pDVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "Valtype return_value;" type_identifier identifier ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "short sVar11;" (sized_type_specifier "short" short) identifier ;) (declaration "Relobj *pRVar12;" type_identifier (pointer_declarator "*pRVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "_func_int_varargs **pp_Var15;" type_identifier (pointer_declarator "**pp_Var15" * (pointer_declarator "*pp_Var15" * identifier)) ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "_func_int_varargs *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "int iVar7;" primitive_type 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) &&\n     (iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)) {\n    puVar1 = (uint *)(puVar10 + (int)offset);\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    p_Var2 = pp_Var15[3];\n    if (p_Var2 == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    uVar6 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    }\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    local_2c = pp_Var15[3];\n    if (uVar6 == 0xffffffff) {\n      if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      uVar3 = puVar1[1];\n      uVar9 = puVar1[2];\n      uVar6 = uVar3;\n      if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      this->offset_size_ = 8;\n      *(uint *)&this->unit_length_ = uVar6 + 0xc;\n      local_34 = puVar1 + 3;\n      pDVar4 = this->dwinfo_;\n      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);\n      pRVar12 = pDVar4->object_;\n      pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n      local_2c = pp_Var15[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\n    }\n    puVar10 = (uchar *)(uVar6 + (int)local_34);\n    if (this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (local_2c == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    sVar11 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar11 == 2) {\n      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);\n      puVar10 = (uchar *)((int)local_34 + 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) &&\n     (iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0))" ( (binary_expression "(-1 < offset) &&\n     (iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)" (parenthesized_expression "(-1 < offset)" ( (binary_expression "-1 < offset" number_literal < identifier) )) && (parenthesized_expression "(iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0)" ( (comma_expression "iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20),\n     uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar13 = (int)((ulonglong)(offset + 0xe) >> 0x20)" identifier = (cast_expression "(int)((ulonglong)(offset + 0xe) >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(offset + 0xe) >> 0x20)" ( (binary_expression "(ulonglong)(offset + 0xe) >> 0x20" (call_expression "(ulonglong)(offset + 0xe)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(offset + 0xe)" ( (binary_expression "offset + 0xe" identifier + number_literal) ))) >> number_literal) )))) , (comma_expression "uVar6 = (int)this->buffer_end_ - (int)puVar10, iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0" (assignment_expression "uVar6 = (int)this->buffer_end_ - (int)puVar10" identifier = (binary_expression "(int)this->buffer_end_ - (int)puVar10" (cast_expression "(int)this->buffer_end_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->buffer_end_" identifier -> field_identifier)) - (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier))) , (comma_expression "iVar14 = (int)uVar6 >> 0x1f,\n     uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar14 = (int)uVar6 >> 0x1f" identifier = (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) , (comma_expression "uVar6 = (uint)((uint)(offset + 0xe) < uVar6), iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0" (assignment_expression "uVar6 = (uint)((uint)(offset + 0xe) < uVar6)" identifier = (call_expression "(uint)((uint)(offset + 0xe) < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)(offset + 0xe) < uVar6)" ( (binary_expression "(uint)(offset + 0xe) < uVar6" (call_expression "(uint)(offset + 0xe)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(offset + 0xe)" ( (binary_expression "offset + 0xe" identifier + number_literal) ))) < identifier) )))) , (comma_expression "iVar7 = iVar13 - iVar14,\n     (SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0" (assignment_expression "iVar7 = iVar13 - iVar14" identifier = (binary_expression "iVar13 - iVar14" identifier - identifier)) , (binary_expression "(SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)) != (int)(iVar7 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6))" ( (binary_expression "SBORROW4(iVar13,iVar14) != SBORROW4(iVar7,uVar6)" (call_expression "SBORROW4(iVar13,iVar14)" identifier (argument_list "(iVar13,iVar14)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar7,uVar6)" identifier (argument_list "(iVar7,uVar6)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar7 - uVar6) < 0" (cast_expression "(int)(iVar7 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 - uVar6)" ( (binary_expression "iVar7 - uVar6" identifier - identifier) ))) < number_literal))))))) ))) )) (compound_statement "{\n    puVar1 = (uint *)(puVar10 + (int)offset);\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    p_Var2 = pp_Var15[3];\n    if (p_Var2 == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    uVar6 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    }\n    pRVar12 = this->dwinfo_->object_;\n    pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n    local_2c = pp_Var15[3];\n    if (uVar6 == 0xffffffff) {\n      if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      uVar3 = puVar1[1];\n      uVar9 = puVar1[2];\n      uVar6 = uVar3;\n      if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      this->offset_size_ = 8;\n      *(uint *)&this->unit_length_ = uVar6 + 0xc;\n      local_34 = puVar1 + 3;\n      pDVar4 = this->dwinfo_;\n      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);\n      pRVar12 = pDVar4->object_;\n      pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n      local_2c = pp_Var15[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\n    }\n    puVar10 = (uchar *)(uVar6 + (int)local_34);\n    if (this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)) {\n      puVar10 = this->buffer_end_;\n    }\n    this->end_of_table_ = puVar10;\n    if (local_2c == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    sVar11 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar11 == 2) {\n      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);\n      puVar10 = (uchar *)((int)local_34 + 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 + (int)offset);" (assignment_expression "puVar1 = (uint *)(puVar10 + (int)offset)" identifier = (cast_expression "(uint *)(puVar10 + (int)offset)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + (int)offset)" ( (binary_expression "puVar10 + (int)offset" identifier + (cast_expression "(int)offset" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pRVar12 = this->dwinfo_->object_;" (assignment_expression "pRVar12 = this->dwinfo_->object_" identifier = (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pp_Var15 = (pRVar12->super_Object)._vptr_Object;" (assignment_expression "pp_Var15 = (pRVar12->super_Object)._vptr_Object" identifier = (field_expression "(pRVar12->super_Object)._vptr_Object" (parenthesized_expression "(pRVar12->super_Object)" ( (field_expression "pRVar12->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var2 = pp_Var15[3];" (assignment_expression "p_Var2 = pp_Var15[3]" identifier = (subscript_expression "pp_Var15[3]" identifier [ number_literal ])) ;) (if_statement "if (p_Var2 == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }" if (parenthesized_expression "(p_Var2 == Relobj::is_big_endian)" ( (binary_expression "p_Var2 == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }" { (expression_statement "iVar7 = (*pp_Var15[0x3a])(pRVar12);" (assignment_expression "iVar7 = (*pp_Var15[0x3a])(pRVar12)" identifier = (call_expression "(*pp_Var15[0x3a])(pRVar12)" (parenthesized_expression "(*pp_Var15[0x3a])" ( (pointer_expression "*pp_Var15[0x3a]" * (subscript_expression "pp_Var15[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar12)" ( identifier )))) ;) (expression_statement "cVar5 = (char)iVar7;" (assignment_expression "cVar5 = (char)iVar7" identifier = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }" else (compound_statement "{\n      iVar7 = (*p_Var2)(pRVar12);\n      cVar5 = (char)iVar7;\n    }" { (expression_statement "iVar7 = (*p_Var2)(pRVar12);" (assignment_expression "iVar7 = (*p_Var2)(pRVar12)" identifier = (call_expression "(*p_Var2)(pRVar12)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(pRVar12)" ( identifier )))) ;) (expression_statement "cVar5 = (char)iVar7;" (assignment_expression "cVar5 = (char)iVar7" identifier = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar5 != '\0') {\n      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    }" { (expression_statement "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "uVar6 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" identifier = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) })) (expression_statement "pRVar12 = this->dwinfo_->object_;" (assignment_expression "pRVar12 = this->dwinfo_->object_" identifier = (field_expression "this->dwinfo_->object_" (field_expression "this->dwinfo_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pp_Var15 = (pRVar12->super_Object)._vptr_Object;" (assignment_expression "pp_Var15 = (pRVar12->super_Object)._vptr_Object" identifier = (field_expression "(pRVar12->super_Object)._vptr_Object" (parenthesized_expression "(pRVar12->super_Object)" ( (field_expression "pRVar12->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_2c = pp_Var15[3];" (assignment_expression "local_2c = pp_Var15[3]" identifier = (subscript_expression "pp_Var15[3]" identifier [ number_literal ])) ;) (if_statement "if (uVar6 == 0xffffffff) {\n      if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      uVar3 = puVar1[1];\n      uVar9 = puVar1[2];\n      uVar6 = uVar3;\n      if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      this->offset_size_ = 8;\n      *(uint *)&this->unit_length_ = uVar6 + 0xc;\n      local_34 = puVar1 + 3;\n      pDVar4 = this->dwinfo_;\n      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);\n      pRVar12 = pDVar4->object_;\n      pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n      local_2c = pp_Var15[3];\n    }\n    else {\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\n    }" if (parenthesized_expression "(uVar6 == 0xffffffff)" ( (binary_expression "uVar6 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      uVar3 = puVar1[1];\n      uVar9 = puVar1[2];\n      uVar6 = uVar3;\n      if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      this->offset_size_ = 8;\n      *(uint *)&this->unit_length_ = uVar6 + 0xc;\n      local_34 = puVar1 + 3;\n      pDVar4 = this->dwinfo_;\n      *(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);\n      pRVar12 = pDVar4->object_;\n      pp_Var15 = (pRVar12->super_Object)._vptr_Object;\n      local_2c = pp_Var15[3];\n    }" { (if_statement "if (local_2c == Relobj::is_big_endian) {\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }\n      else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }" if (parenthesized_expression "(local_2c == Relobj::is_big_endian)" ( (binary_expression "local_2c == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n        iVar7 = (*pp_Var15[0x3a])(pRVar12);\n        cVar5 = (char)iVar7;\n      }" { (expression_statement "iVar7 = (*pp_Var15[0x3a])(pRVar12);" (assignment_expression "iVar7 = (*pp_Var15[0x3a])(pRVar12)" identifier = (call_expression "(*pp_Var15[0x3a])(pRVar12)" (parenthesized_expression "(*pp_Var15[0x3a])" ( (pointer_expression "*pp_Var15[0x3a]" * (subscript_expression "pp_Var15[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar12)" ( identifier )))) ;) (expression_statement "cVar5 = (char)iVar7;" (assignment_expression "cVar5 = (char)iVar7" identifier = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }" else (compound_statement "{\n        iVar7 = (*local_2c)(pRVar12);\n        cVar5 = (char)iVar7;\n      }" { (expression_statement "iVar7 = (*local_2c)(pRVar12);" (assignment_expression "iVar7 = (*local_2c)(pRVar12)" identifier = (call_expression "(*local_2c)(pRVar12)" (parenthesized_expression "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) )) (argument_list "(pRVar12)" ( identifier )))) ;) (expression_statement "cVar5 = (char)iVar7;" (assignment_expression "cVar5 = (char)iVar7" identifier = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "uVar3 = puVar1[1];" (assignment_expression "uVar3 = puVar1[1]" identifier = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar1[2];" (assignment_expression "uVar9 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = uVar3;" (assignment_expression "uVar6 = uVar3" identifier = identifier) ;) (if_statement "if (cVar5 != '\0') {\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;\n        uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" { (expression_statement "uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18;" (assignment_expression "uVar6 = uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" identifier = (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8 | uVar9 << 0x18" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8 | (uVar9 & 0xff00) << 8" (binary_expression "uVar9 >> 0x18 | (uVar9 & 0xff0000) >> 8" (binary_expression "uVar9 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar9 & 0xff0000) >> 8" (parenthesized_expression "(uVar9 & 0xff0000)" ( (binary_expression "uVar9 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar9 & 0xff00) << 8" (parenthesized_expression "(uVar9 & 0xff00)" ( (binary_expression "uVar9 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar9 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar9 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) })) (expression_statement "this->offset_size_ = 8;" (assignment_expression "this->offset_size_ = 8" (field_expression "this->offset_size_" identifier -> field_identifier) = number_literal) ;) (expression_statement "*(uint *)&this->unit_length_ = uVar6 + 0xc;" (assignment_expression "*(uint *)&this->unit_length_ = uVar6 + 0xc" (pointer_expression "*(uint *)&this->unit_length_" * (cast_expression "(uint *)&this->unit_length_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->unit_length_" & (field_expression "this->unit_length_" identifier -> field_identifier)))) = (binary_expression "uVar6 + 0xc" identifier + number_literal)) ;) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "pDVar4 = this->dwinfo_;" (assignment_expression "pDVar4 = this->dwinfo_" identifier = (field_expression "this->dwinfo_" identifier -> field_identifier)) ;) (expression_statement "*(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6);" (assignment_expression "*(uint *)((int)&this->unit_length_ + 4) = uVar9 + (0xfffffff3 < uVar6)" (pointer_expression "*(uint *)((int)&this->unit_length_ + 4)" * (cast_expression "(uint *)((int)&this->unit_length_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->unit_length_ + 4)" ( (binary_expression "(int)&this->unit_length_ + 4" (cast_expression "(int)&this->unit_length_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->unit_length_" & (field_expression "this->unit_length_" identifier -> field_identifier))) + number_literal) )))) = (binary_expression "uVar9 + (0xfffffff3 < uVar6)" identifier + (parenthesized_expression "(0xfffffff3 < uVar6)" ( (binary_expression "0xfffffff3 < uVar6" number_literal < identifier) )))) ;) (expression_statement "pRVar12 = pDVar4->object_;" (assignment_expression "pRVar12 = pDVar4->object_" identifier = (field_expression "pDVar4->object_" identifier -> field_identifier)) ;) (expression_statement "pp_Var15 = (pRVar12->super_Object)._vptr_Object;" (assignment_expression "pp_Var15 = (pRVar12->super_Object)._vptr_Object" identifier = (field_expression "(pRVar12->super_Object)._vptr_Object" (parenthesized_expression "(pRVar12->super_Object)" ( (field_expression "pRVar12->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_2c = pp_Var15[3];" (assignment_expression "local_2c = pp_Var15[3]" identifier = (subscript_expression "pp_Var15[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\n    }" else (compound_statement "{\n      this->offset_size_ = 4;\n      *(uint *)&this->unit_length_ = uVar6 + 4;\n      *(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);\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 "*(uint *)&this->unit_length_ = uVar6 + 4;" (assignment_expression "*(uint *)&this->unit_length_ = uVar6 + 4" (pointer_expression "*(uint *)&this->unit_length_" * (cast_expression "(uint *)&this->unit_length_" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->unit_length_" & (field_expression "this->unit_length_" identifier -> field_identifier)))) = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) (expression_statement "*(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6);" (assignment_expression "*(uint *)((int)&this->unit_length_ + 4) = (uint)(0xfffffffb < uVar6)" (pointer_expression "*(uint *)((int)&this->unit_length_ + 4)" * (cast_expression "(uint *)((int)&this->unit_length_ + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->unit_length_ + 4)" ( (binary_expression "(int)&this->unit_length_ + 4" (cast_expression "(int)&this->unit_length_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->unit_length_" & (field_expression "this->unit_length_" identifier -> field_identifier))) + number_literal) )))) = (call_expression "(uint)(0xfffffffb < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffb < uVar6)" ( (binary_expression "0xfffffffb < uVar6" number_literal < identifier) )))) ;) }))) (expression_statement "puVar10 = (uchar *)(uVar6 + (int)local_34);" (assignment_expression "puVar10 = (uchar *)(uVar6 + (int)local_34)" identifier = (cast_expression "(uchar *)(uVar6 + (int)local_34)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (int)local_34)" ( (binary_expression "uVar6 + (int)local_34" identifier + (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)) {\n      puVar10 = this->buffer_end_;\n    }" if (parenthesized_expression "(this->buffer_end_ < (uchar *)(uVar6 + (int)local_34))" ( (binary_expression "this->buffer_end_ < (uchar *)(uVar6 + (int)local_34)" (field_expression "this->buffer_end_" identifier -> field_identifier) < (cast_expression "(uchar *)(uVar6 + (int)local_34)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (int)local_34)" ( (binary_expression "uVar6 + (int)local_34" identifier + (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) 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 (local_2c == Relobj::is_big_endian) {\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }\n    else {\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }" if (parenthesized_expression "(local_2c == Relobj::is_big_endian)" ( (binary_expression "local_2c == Relobj" identifier == identifier) (ERROR "::is_big_endian" : : identifier) )) (compound_statement "{\n      iVar7 = (*pp_Var15[0x3a])(pRVar12);\n      cVar5 = (char)iVar7;\n    }" { (expression_statement "iVar7 = (*pp_Var15[0x3a])(pRVar12);" (assignment_expression "iVar7 = (*pp_Var15[0x3a])(pRVar12)" identifier = (call_expression "(*pp_Var15[0x3a])(pRVar12)" (parenthesized_expression "(*pp_Var15[0x3a])" ( (pointer_expression "*pp_Var15[0x3a]" * (subscript_expression "pp_Var15[0x3a]" identifier [ number_literal ])) )) (argument_list "(pRVar12)" ( identifier )))) ;) (expression_statement "cVar5 = (char)iVar7;" (assignment_expression "cVar5 = (char)iVar7" identifier = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }" else (compound_statement "{\n      iVar7 = (*local_2c)(pRVar12);\n      cVar5 = (char)iVar7;\n    }" { (expression_statement "iVar7 = (*local_2c)(pRVar12);" (assignment_expression "iVar7 = (*local_2c)(pRVar12)" identifier = (call_expression "(*local_2c)(pRVar12)" (parenthesized_expression "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) )) (argument_list "(pRVar12)" ( identifier )))) ;) (expression_statement "cVar5 = (char)iVar7;" (assignment_expression "cVar5 = (char)iVar7" identifier = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) (expression_statement "sVar11 = (short)*local_34;" (assignment_expression "sVar11 = (short)*local_34" identifier = (cast_expression "(short)*local_34" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*local_34" * identifier))) ;) (if_statement "if (cVar5 != '\0') {\n      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" { (expression_statement "sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));" (assignment_expression "sVar11 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" identifier = (call_expression "CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" identifier (argument_list "((char)*local_34,*(undefined1 *)((int)local_34 + 1))" ( (cast_expression "(char)*local_34" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_34" * identifier)) , (pointer_expression "*(undefined1 *)((int)local_34 + 1)" * (cast_expression "(undefined1 *)((int)local_34 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + 1)" ( (binary_expression "(int)local_34 + 1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })) (if_statement "if (sVar11 == 2) {\n      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);\n      puVar10 = (uchar *)((int)local_34 + this->offset_size_ * 2 + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }" if (parenthesized_expression "(sVar11 == 2)" ( (binary_expression "sVar11 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));\n      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);\n      puVar10 = (uchar *)((int)local_34 + this->offset_size_ * 2 + 2);\n      if (puVar10 < this->buffer_end_) {\n        this->pinfo_ = puVar10;\n        return true;\n      }\n    }" { (expression_statement "puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_));" (assignment_expression "puVar8 = (undefined1 *)((int)local_34 + (2 - (int)this->buffer_))" identifier = (cast_expression "(undefined1 *)((int)local_34 + (2 - (int)this->buffer_))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + (2 - (int)this->buffer_))" ( (binary_expression "(int)local_34 + (2 - (int)this->buffer_)" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(2 - (int)this->buffer_)" ( (binary_expression "2 - (int)this->buffer_" number_literal - (cast_expression "(int)this->buffer_" ( (type_descriptor "int" primitive_type) ) (field_expression "this->buffer_" identifier -> field_identifier))) ))) )))) ;) (expression_statement "(*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);" (call_expression "(*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])\n                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&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_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_)" ( (field_expression "this->reloc_mapper_" identifier -> field_identifier) , identifier , (binary_expression "(int)puVar8 >> 0x1f" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (pointer_expression "&this->cu_offset_" & (field_expression "this->cu_offset_" identifier -> field_identifier)) ))) ;) (expression_statement "puVar10 = (uchar *)((int)local_34 + this->offset_size_ * 2 + 2);" (assignment_expression "puVar10 = (uchar *)((int)local_34 + this->offset_size_ * 2 + 2)" identifier = (cast_expression "(uchar *)((int)local_34 + this->offset_size_ * 2 + 2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + this->offset_size_ * 2 + 2)" ( (binary_expression "(int)local_34 + this->offset_size_ * 2 + 2" (binary_expression "(int)local_34 + this->offset_size_ * 2" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + (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 "undefined4 FUN_001bcfb0(int *param_1,uint param_2,int param_3)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_001bcfb0(int *param_1,uint param_2,int param_3)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_001bcfb0(int *param_1,uint param_2,int param_3)" identifier (parameter_list "(int *param_1,uint param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "short sVar8;" (sized_type_specifier "short" short) identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "code *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "iVar12 = param_1[1];" (assignment_expression "iVar12 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 == 0) {\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }" { (expression_statement "FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);" (call_expression "FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT)" identifier (argument_list "("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT)" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""read_header"" " string_content ") , (pointer_expression "&__DT_PLTGOT" & identifier) ))) ;) })) (if_statement "if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0))" ( (binary_expression "(-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)" (parenthesized_expression "(-1 < param_3)" ( (binary_expression "-1 < param_3" number_literal < identifier) )) && (parenthesized_expression "(param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)" ( (comma_expression "param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "param_3 = param_3 + (uint)(0xfffffff1 < param_2)" identifier = (binary_expression "param_3 + (uint)(0xfffffff1 < param_2)" identifier + (call_expression "(uint)(0xfffffff1 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffff1 < param_2)" ( (binary_expression "0xfffffff1 < param_2" number_literal < identifier) ))))) , (comma_expression "iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "iVar11 = param_1[2] - iVar12 >> 0x1f" identifier = (binary_expression "param_1[2] - iVar12 >> 0x1f" (binary_expression "param_1[2] - iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier) >> number_literal)) , (comma_expression "uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12))" identifier = (call_expression "(uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 + 0xe < (uint)(param_1[2] - iVar12))" ( (binary_expression "param_2 + 0xe < (uint)(param_1[2] - iVar12)" (binary_expression "param_2 + 0xe" identifier + number_literal) < (call_expression "(uint)(param_1[2] - iVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] - iVar12)" ( (binary_expression "param_1[2] - iVar12" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier) )))) )))) , (comma_expression "iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "iVar4 = param_3 - iVar11" identifier = (binary_expression "param_3 - iVar11" identifier - identifier)) , (binary_expression "(SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (parenthesized_expression "(SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10))" ( (binary_expression "SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)" (call_expression "SBORROW4(param_3,iVar11)" identifier (argument_list "(param_3,iVar11)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar4,uVar10)" identifier (argument_list "(iVar4,uVar10)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar4 - uVar10) < 0" (cast_expression "(int)(iVar4 - uVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar10)" ( (binary_expression "iVar4 - uVar10" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }" { (expression_statement "puVar1 = (uint *)(iVar12 + param_2);" (assignment_expression "puVar1 = (uint *)(iVar12 + param_2)" identifier = (cast_expression "(uint *)(iVar12 + param_2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + param_2)" ( (binary_expression "iVar12 + param_2" identifier + identifier) )))) ;) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "pcVar2 = *(code **)(*piVar9 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar9 + 0xc)" identifier = (pointer_expression "*(code **)(*piVar9 + 0xc)" * (cast_expression "(code **)(*piVar9 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 0xc)" ( (binary_expression "*piVar9 + 0xc" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }" if (parenthesized_expression "(pcVar2 == FUN_00084390)" ( (binary_expression "pcVar2 == FUN_00084390" identifier == identifier) )) (compound_statement "{\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }" { (expression_statement "cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9)" identifier = (call_expression "(**(code **)(*piVar9 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(*piVar9 + 0xe8))" ( (pointer_expression "**(code **)(*piVar9 + 0xe8)" * (pointer_expression "*(code **)(*piVar9 + 0xe8)" * (cast_expression "(code **)(*piVar9 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 0xe8)" ( (binary_expression "*piVar9 + 0xe8" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) )) (argument_list "(piVar9)" ( identifier )))) ;) }) (else_clause "else {\n      cVar5 = (*pcVar2)(piVar9);\n    }" else (compound_statement "{\n      cVar5 = (*pcVar2)(piVar9);\n    }" { (expression_statement "cVar5 = (*pcVar2)(piVar9);" (assignment_expression "cVar5 = (*pcVar2)(piVar9)" identifier = (call_expression "(*pcVar2)(piVar9)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(piVar9)" ( identifier )))) ;) }))) (expression_statement "uVar10 = *puVar1;" (assignment_expression "uVar10 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }" { (expression_statement "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;" (assignment_expression "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" identifier = (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" ( (binary_expression "uVar10 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" ( (binary_expression "uVar10 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar10 << 0x18" identifier << number_literal))) ;) })) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar12 = *piVar9;" (assignment_expression "iVar12 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "local_2c = *(code **)(iVar12 + 0xc);" (assignment_expression "local_2c = *(code **)(iVar12 + 0xc)" identifier = (pointer_expression "*(code **)(iVar12 + 0xc)" * (cast_expression "(code **)(iVar12 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }" { (if_statement "if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }" if (parenthesized_expression "(local_2c == FUN_00084390)" ( (binary_expression "local_2c == FUN_00084390" identifier == identifier) )) (compound_statement "{\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }" { (expression_statement "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9)" identifier = (call_expression "(**(code **)(iVar12 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(iVar12 + 0xe8))" ( (pointer_expression "**(code **)(iVar12 + 0xe8)" * (pointer_expression "*(code **)(iVar12 + 0xe8)" * (cast_expression "(code **)(iVar12 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xe8)" ( (binary_expression "iVar12 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar9)" ( identifier )))) ;) }) (else_clause "else {\n        cVar5 = (*local_2c)(piVar9);\n      }" else (compound_statement "{\n        cVar5 = (*local_2c)(piVar9);\n      }" { (expression_statement "cVar5 = (*local_2c)(piVar9);" (assignment_expression "cVar5 = (*local_2c)(piVar9)" identifier = (call_expression "(*local_2c)(piVar9)" (parenthesized_expression "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) )) (argument_list "(piVar9)" ( identifier )))) ;) }))) (expression_statement "uVar3 = puVar1[1];" (assignment_expression "uVar3 = puVar1[1]" identifier = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar1[2];" (assignment_expression "uVar7 = puVar1[2]" identifier = (subscript_expression "puVar1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = uVar3;" (assignment_expression "uVar10 = uVar3" identifier = identifier) ;) (if_statement "if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" { (expression_statement "uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" identifier = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x18" identifier << number_literal))) ;) })) (expression_statement "param_1[4] = 8;" (assignment_expression "param_1[4] = 8" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = uVar10 + 0xc;" (assignment_expression "param_1[8] = uVar10 + 0xc" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "uVar10 + 0xc" identifier + number_literal)) ;) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "param_1[9] = uVar7 + (0xfffffff3 < uVar10);" (assignment_expression "param_1[9] = uVar7 + (0xfffffff3 < uVar10)" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (binary_expression "uVar7 + (0xfffffff3 < uVar10)" identifier + (parenthesized_expression "(0xfffffff3 < uVar10)" ( (binary_expression "0xfffffff3 < uVar10" number_literal < identifier) )))) ;) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" identifier = (pointer_expression "*(int **)(*param_1 + 8)" * (cast_expression "(int **)(*param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (expression_statement "iVar12 = *piVar9;" (assignment_expression "iVar12 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "local_2c = *(code **)(iVar12 + 0xc);" (assignment_expression "local_2c = *(code **)(iVar12 + 0xc)" identifier = (pointer_expression "*(code **)(iVar12 + 0xc)" * (cast_expression "(code **)(iVar12 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" else (compound_statement "{\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" { (expression_statement "param_1[4] = 4;" (assignment_expression "param_1[4] = 4" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[8] = uVar10 + 4;" (assignment_expression "param_1[8] = uVar10 + 4" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "uVar10 + 4" identifier + number_literal)) ;) (expression_statement "param_1[9] = (uint)(0xfffffffb < uVar10);" (assignment_expression "param_1[9] = (uint)(0xfffffffb < uVar10)" (subscript_expression "param_1[9]" identifier [ number_literal ]) = (call_expression "(uint)(0xfffffffb < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffb < uVar10)" ( (binary_expression "0xfffffffb < uVar10" number_literal < identifier) )))) ;) }))) (expression_statement "puVar6 = (undefined1 *)(uVar10 + (int)local_34);" (assignment_expression "puVar6 = (undefined1 *)(uVar10 + (int)local_34)" identifier = (cast_expression "(undefined1 *)(uVar10 + (int)local_34)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + (int)local_34)" ( (binary_expression "uVar10 + (int)local_34" identifier + (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }" if (parenthesized_expression "((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34))" ( (binary_expression "(undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)" (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 *)(uVar10 + (int)local_34)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + (int)local_34)" ( (binary_expression "uVar10 + (int)local_34" identifier + (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n      puVar6 = (undefined1 *)param_1[2];\n    }" { (expression_statement "puVar6 = (undefined1 *)param_1[2];" (assignment_expression "puVar6 = (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[6] = (int)puVar6;" (assignment_expression "param_1[6] = (int)puVar6" (subscript_expression "param_1[6]" identifier [ number_literal ]) = (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }" if (parenthesized_expression "(local_2c == FUN_00084390)" ( (binary_expression "local_2c == FUN_00084390" identifier == identifier) )) (compound_statement "{\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }" { (expression_statement "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9)" identifier = (call_expression "(**(code **)(iVar12 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(iVar12 + 0xe8))" ( (pointer_expression "**(code **)(iVar12 + 0xe8)" * (pointer_expression "*(code **)(iVar12 + 0xe8)" * (cast_expression "(code **)(iVar12 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xe8)" ( (binary_expression "iVar12 + 0xe8" identifier + number_literal) ))))) )) (argument_list "(piVar9)" ( identifier )))) ;) }) (else_clause "else {\n      cVar5 = (*local_2c)(piVar9);\n    }" else (compound_statement "{\n      cVar5 = (*local_2c)(piVar9);\n    }" { (expression_statement "cVar5 = (*local_2c)(piVar9);" (assignment_expression "cVar5 = (*local_2c)(piVar9)" identifier = (call_expression "(*local_2c)(piVar9)" (parenthesized_expression "(*local_2c)" ( (pointer_expression "*local_2c" * identifier) )) (argument_list "(piVar9)" ( identifier )))) ;) }))) (expression_statement "sVar8 = (short)*local_34;" (assignment_expression "sVar8 = (short)*local_34" identifier = (cast_expression "(short)*local_34" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (pointer_expression "*local_34" * identifier))) ;) (if_statement "if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" { (expression_statement "sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));" (assignment_expression "sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" identifier = (call_expression "CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" identifier (argument_list "((char)*local_34,*(undefined1 *)((int)local_34 + 1))" ( (cast_expression "(char)*local_34" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_34" * identifier)) , (pointer_expression "*(undefined1 *)((int)local_34 + 1)" * (cast_expression "(undefined1 *)((int)local_34 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + 1)" ( (binary_expression "(int)local_34 + 1" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })) (if_statement "if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }" if (parenthesized_expression "(sVar8 == 2)" ( (binary_expression "sVar8 == 2" identifier == number_literal) )) (compound_statement "{\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }" { (expression_statement "puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));" (assignment_expression "puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]))" identifier = (cast_expression "(undefined1 *)((int)local_34 + (2 - param_1[1]))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + (2 - param_1[1]))" ( (binary_expression "(int)local_34 + (2 - param_1[1])" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(2 - param_1[1])" ( (binary_expression "2 - param_1[1]" number_literal - (subscript_expression "param_1[1]" identifier [ number_literal ])) ))) )))) ;) (expression_statement "(**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);" (call_expression "(**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10)" (parenthesized_expression "(**(code **)(*(int *)param_1[0xc] + 0x14))" ( (pointer_expression "**(code **)(*(int *)param_1[0xc] + 0x14)" * (pointer_expression "*(code **)(*(int *)param_1[0xc] + 0x14)" * (cast_expression "(code **)(*(int *)param_1[0xc] + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[0xc] + 0x14)" ( (binary_expression "*(int *)param_1[0xc] + 0x14" (pointer_expression "*(int *)param_1[0xc]" * (cast_expression "(int *)param_1[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10)" ( (cast_expression "(int *)param_1[0xc]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ])) , identifier , (binary_expression "(int)puVar6 >> 0x1f" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (binary_expression "param_1 + 10" identifier + number_literal) ))) ;) (expression_statement "puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);" (assignment_expression "puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2)" identifier = (cast_expression "(undefined1 *)((int)local_34 + param_1[4] * 2 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_34 + param_1[4] * 2 + 2)" ( (binary_expression "(int)local_34 + param_1[4] * 2 + 2" (binary_expression "(int)local_34 + param_1[4] * 2" (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "param_1[4] * 2" (subscript_expression "param_1[4]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) ;) (if_statement "if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }" if (parenthesized_expression "(puVar6 < (undefined1 *)param_1[2])" ( (binary_expression "puVar6 < (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[5] = (int)puVar6;\n        return 1;\n      }" { (expression_statement "param_1[5] = (int)puVar6;" (assignment_expression "param_1[5] = (int)puVar6" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) 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 TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ") , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) , (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) >> LIT)) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) )))) )))) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)))))) ))) )) (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 * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT < 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 * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 TYPE) ) 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 TYPE) ) 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 ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (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 TYPE) ) IDENT) + LIT) )))) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (subscript_expression IDENT [ LIT ])) ))) )))) ;) (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 TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 TYPE) ) IDENT) + (binary_expression (subscript_expression 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 TYPE) ) IDENT)) ;) (return_statement return LIT ;) })) })) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_001bcfb0(int *param_1,uint param_2,int param_3)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_001bcfb0(int *param_1,uint param_2,int param_3)" (identifier "FUN_001bcfb0") (parameter_list "(int *param_1,uint param_2,int param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  code *pcVar2;\n  uint uVar3;\n  int iVar4;\n  char cVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  short sVar8;\n  int *piVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint *local_34;\n  code *local_2c;\n  \n  iVar12 = param_1[1];\n  if (iVar12 == 0) {\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }\n  if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "short sVar8;" (sized_type_specifier "short" (short "short")) (identifier "sVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint *local_34;" (type_identifier "uint") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "code *local_2c;" (type_identifier "code") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "iVar12 = param_1[1];" (assignment_expression "iVar12 = param_1[1]" (identifier "iVar12") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar12 == 0) {\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);\n  }" ({ "{") (expression_statement "FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);" (call_expression "FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT)" (identifier "FUN_0007ac80") (argument_list "("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT)" (( "(") (string_literal ""../../gold/dwarf_reader.cc"" (" """) (string_content "../../gold/dwarf_reader.cc") (" """)) (, ",") (number_literal "0x22f") (, ",") (string_literal ""read_header"" (" """) (string_content "read_header") (" """)) (, ",") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0))" (( "(") (binary_expression "(-1 < param_3) &&\n     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)" (parenthesized_expression "(-1 < param_3)" (( "(") (binary_expression "-1 < param_3" (number_literal "-1") (< "<") (identifier "param_3")) () ")")) (&& "&&") (parenthesized_expression "(param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)" (( "(") (comma_expression "param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "param_3 = param_3 + (uint)(0xfffffff1 < param_2)" (identifier "param_3") (= "=") (binary_expression "param_3 + (uint)(0xfffffff1 < param_2)" (identifier "param_3") (+ "+") (call_expression "(uint)(0xfffffff1 < param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffff1 < param_2)" (( "(") (binary_expression "0xfffffff1 < param_2" (number_literal "0xfffffff1") (< "<") (identifier "param_2")) () ")"))))) (, ",") (comma_expression "iVar11 = param_1[2] - iVar12 >> 0x1f,\n     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "iVar11 = param_1[2] - iVar12 >> 0x1f" (identifier "iVar11") (= "=") (binary_expression "param_1[2] - iVar12 >> 0x1f" (binary_expression "param_1[2] - iVar12" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (identifier "iVar12")) (>> ">>") (number_literal "0x1f"))) (, ",") (comma_expression "uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12))" (identifier "uVar10") (= "=") (call_expression "(uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 + 0xe < (uint)(param_1[2] - iVar12))" (( "(") (binary_expression "param_2 + 0xe < (uint)(param_1[2] - iVar12)" (binary_expression "param_2 + 0xe" (identifier "param_2") (+ "+") (number_literal "0xe")) (< "<") (call_expression "(uint)(param_1[2] - iVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[2] - iVar12)" (( "(") (binary_expression "param_1[2] - iVar12" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (identifier "iVar12")) () ")")))) () ")")))) (, ",") (comma_expression "iVar4 = param_3 - iVar11,\n     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (assignment_expression "iVar4 = param_3 - iVar11" (identifier "iVar4") (= "=") (binary_expression "param_3 - iVar11" (identifier "param_3") (- "-") (identifier "iVar11"))) (, ",") (binary_expression "(SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0" (parenthesized_expression "(SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10))" (( "(") (binary_expression "SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)" (call_expression "SBORROW4(param_3,iVar11)" (identifier "SBORROW4") (argument_list "(param_3,iVar11)" (( "(") (identifier "param_3") (, ",") (identifier "iVar11") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar4,uVar10)" (identifier "SBORROW4") (argument_list "(iVar4,uVar10)" (( "(") (identifier "iVar4") (, ",") (identifier "uVar10") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar4 - uVar10) < 0" (cast_expression "(int)(iVar4 - uVar10)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar4 - uVar10)" (( "(") (binary_expression "iVar4 - uVar10" (identifier "iVar4") (- "-") (identifier "uVar10")) () ")"))) (< "<") (number_literal "0"))))))) () ")"))) () ")")) (compound_statement "{\n    puVar1 = (uint *)(iVar12 + param_2);\n    piVar9 = *(int **)(*param_1 + 8);\n    pcVar2 = *(code **)(*piVar9 + 0xc);\n    if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }\n    uVar10 = *puVar1;\n    local_34 = puVar1 + 1;\n    if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }\n    piVar9 = *(int **)(*param_1 + 8);\n    iVar12 = *piVar9;\n    local_2c = *(code **)(iVar12 + 0xc);\n    if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }\n    puVar6 = (undefined1 *)(uVar10 + (int)local_34);\n    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }\n    param_1[6] = (int)puVar6;\n    if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }\n    sVar8 = (short)*local_34;\n    if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }\n    if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar1 = (uint *)(iVar12 + param_2);" (assignment_expression "puVar1 = (uint *)(iVar12 + param_2)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(iVar12 + param_2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + param_2)" (( "(") (binary_expression "iVar12 + param_2" (identifier "iVar12") (+ "+") (identifier "param_2")) () ")")))) (; ";")) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*piVar9 + 0xc);" (assignment_expression "pcVar2 = *(code **)(*piVar9 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*piVar9 + 0xc)" (* "*") (cast_expression "(code **)(*piVar9 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar9 + 0xc)" (( "(") (binary_expression "*piVar9 + 0xc" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar2 == FUN_00084390) {\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*pcVar2)(piVar9);\n    }" (if "if") (parenthesized_expression "(pcVar2 == FUN_00084390)" (( "(") (binary_expression "pcVar2 == FUN_00084390" (identifier "pcVar2") (== "==") (identifier "FUN_00084390")) () ")")) (compound_statement "{\n      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);\n    }" ({ "{") (expression_statement "cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9)" (identifier "cVar5") (= "=") (call_expression "(**(code **)(*piVar9 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(*piVar9 + 0xe8))" (( "(") (pointer_expression "**(code **)(*piVar9 + 0xe8)" (* "*") (pointer_expression "*(code **)(*piVar9 + 0xe8)" (* "*") (cast_expression "(code **)(*piVar9 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar9 + 0xe8)" (( "(") (binary_expression "*piVar9 + 0xe8" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      cVar5 = (*pcVar2)(piVar9);\n    }" (else "else") (compound_statement "{\n      cVar5 = (*pcVar2)(piVar9);\n    }" ({ "{") (expression_statement "cVar5 = (*pcVar2)(piVar9);" (assignment_expression "cVar5 = (*pcVar2)(piVar9)" (identifier "cVar5") (= "=") (call_expression "(*pcVar2)(piVar9)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar10 = *puVar1;" (assignment_expression "uVar10 = *puVar1" (identifier "uVar10") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "local_34 = puVar1 + 1;" (assignment_expression "local_34 = puVar1 + 1" (identifier "local_34") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar5 != '\0') {\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;\n    }" ({ "{") (expression_statement "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;" (assignment_expression "uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" (identifier "uVar10") (= "=") (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8" (binary_expression "uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8" (binary_expression "uVar10 >> 0x18" (identifier "uVar10") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar10 & 0xff0000) >> 8" (parenthesized_expression "(uVar10 & 0xff0000)" (( "(") (binary_expression "uVar10 & 0xff0000" (identifier "uVar10") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar10 & 0xff00) << 8" (parenthesized_expression "(uVar10 & 0xff00)" (( "(") (binary_expression "uVar10 & 0xff00" (identifier "uVar10") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar10 << 0x18" (identifier "uVar10") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar12 = *piVar9;" (assignment_expression "iVar12 = *piVar9" (identifier "iVar12") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "local_2c = *(code **)(iVar12 + 0xc);" (assignment_expression "local_2c = *(code **)(iVar12 + 0xc)" (identifier "local_2c") (= "=") (pointer_expression "*(code **)(iVar12 + 0xc)" (* "*") (cast_expression "(code **)(iVar12 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0xc)" (( "(") (binary_expression "iVar12 + 0xc" (identifier "iVar12") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (uVar10 == 0xffffffff) {\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }\n    else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" (if "if") (parenthesized_expression "(uVar10 == 0xffffffff)" (( "(") (binary_expression "uVar10 == 0xffffffff" (identifier "uVar10") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }\n      uVar3 = puVar1[1];\n      uVar7 = puVar1[2];\n      uVar10 = uVar3;\n      if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }\n      param_1[4] = 8;\n      param_1[8] = uVar10 + 0xc;\n      local_34 = puVar1 + 3;\n      param_1[9] = uVar7 + (0xfffffff3 < uVar10);\n      piVar9 = *(int **)(*param_1 + 8);\n      iVar12 = *piVar9;\n      local_2c = *(code **)(iVar12 + 0xc);\n    }" ({ "{") (if_statement "if (local_2c == FUN_00084390) {\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }\n      else {\n        cVar5 = (*local_2c)(piVar9);\n      }" (if "if") (parenthesized_expression "(local_2c == FUN_00084390)" (( "(") (binary_expression "local_2c == FUN_00084390" (identifier "local_2c") (== "==") (identifier "FUN_00084390")) () ")")) (compound_statement "{\n        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n      }" ({ "{") (expression_statement "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9)" (identifier "cVar5") (= "=") (call_expression "(**(code **)(iVar12 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(iVar12 + 0xe8))" (( "(") (pointer_expression "**(code **)(iVar12 + 0xe8)" (* "*") (pointer_expression "*(code **)(iVar12 + 0xe8)" (* "*") (cast_expression "(code **)(iVar12 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0xe8)" (( "(") (binary_expression "iVar12 + 0xe8" (identifier "iVar12") (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        cVar5 = (*local_2c)(piVar9);\n      }" (else "else") (compound_statement "{\n        cVar5 = (*local_2c)(piVar9);\n      }" ({ "{") (expression_statement "cVar5 = (*local_2c)(piVar9);" (assignment_expression "cVar5 = (*local_2c)(piVar9)" (identifier "cVar5") (= "=") (call_expression "(*local_2c)(piVar9)" (parenthesized_expression "(*local_2c)" (( "(") (pointer_expression "*local_2c" (* "*") (identifier "local_2c")) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar3 = puVar1[1];" (assignment_expression "uVar3 = puVar1[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar1[2];" (assignment_expression "uVar7 = puVar1[2]" (identifier "uVar7") (= "=") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar10 = uVar3;" (assignment_expression "uVar10 = uVar3" (identifier "uVar10") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (cVar5 != '\0') {\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;\n      }" ({ "{") (expression_statement "uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (identifier "uVar10") (= "=") (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" (identifier "uVar7") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" (( "(") (binary_expression "uVar7 & 0xff0000" (identifier "uVar7") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" (( "(") (binary_expression "uVar7 & 0xff00" (identifier "uVar7") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar7 << 0x18" (identifier "uVar7") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;" (assignment_expression "uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (identifier "uVar7") (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar3 << 0x18" (identifier "uVar3") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "param_1[4] = 8;" (assignment_expression "param_1[4] = 8" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "param_1[8] = uVar10 + 0xc;" (assignment_expression "param_1[8] = uVar10 + 0xc" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "uVar10 + 0xc" (identifier "uVar10") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "local_34 = puVar1 + 3;" (assignment_expression "local_34 = puVar1 + 3" (identifier "local_34") (= "=") (binary_expression "puVar1 + 3" (identifier "puVar1") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "param_1[9] = uVar7 + (0xfffffff3 < uVar10);" (assignment_expression "param_1[9] = uVar7 + (0xfffffff3 < uVar10)" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (binary_expression "uVar7 + (0xfffffff3 < uVar10)" (identifier "uVar7") (+ "+") (parenthesized_expression "(0xfffffff3 < uVar10)" (( "(") (binary_expression "0xfffffff3 < uVar10" (number_literal "0xfffffff3") (< "<") (identifier "uVar10")) () ")")))) (; ";")) (expression_statement "piVar9 = *(int **)(*param_1 + 8);" (assignment_expression "piVar9 = *(int **)(*param_1 + 8)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(*param_1 + 8)" (* "*") (cast_expression "(int **)(*param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar12 = *piVar9;" (assignment_expression "iVar12 = *piVar9" (identifier "iVar12") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "local_2c = *(code **)(iVar12 + 0xc);" (assignment_expression "local_2c = *(code **)(iVar12 + 0xc)" (identifier "local_2c") (= "=") (pointer_expression "*(code **)(iVar12 + 0xc)" (* "*") (cast_expression "(code **)(iVar12 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0xc)" (( "(") (binary_expression "iVar12 + 0xc" (identifier "iVar12") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" (else "else") (compound_statement "{\n      param_1[4] = 4;\n      param_1[8] = uVar10 + 4;\n      param_1[9] = (uint)(0xfffffffb < uVar10);\n    }" ({ "{") (expression_statement "param_1[4] = 4;" (assignment_expression "param_1[4] = 4" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "4")) (; ";")) (expression_statement "param_1[8] = uVar10 + 4;" (assignment_expression "param_1[8] = uVar10 + 4" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "uVar10 + 4" (identifier "uVar10") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_1[9] = (uint)(0xfffffffb < uVar10);" (assignment_expression "param_1[9] = (uint)(0xfffffffb < uVar10)" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (call_expression "(uint)(0xfffffffb < uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffb < uVar10)" (( "(") (binary_expression "0xfffffffb < uVar10" (number_literal "0xfffffffb") (< "<") (identifier "uVar10")) () ")")))) (; ";")) (} "}")))) (expression_statement "puVar6 = (undefined1 *)(uVar10 + (int)local_34);" (assignment_expression "puVar6 = (undefined1 *)(uVar10 + (int)local_34)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(uVar10 + (int)local_34)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar10 + (int)local_34)" (( "(") (binary_expression "uVar10 + (int)local_34" (identifier "uVar10") (+ "+") (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34"))) () ")")))) (; ";")) (if_statement "if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {\n      puVar6 = (undefined1 *)param_1[2];\n    }" (if "if") (parenthesized_expression "((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34))" (( "(") (binary_expression "(undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)" (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 *)(uVar10 + (int)local_34)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar10 + (int)local_34)" (( "(") (binary_expression "uVar10 + (int)local_34" (identifier "uVar10") (+ "+") (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34"))) () ")")))) () ")")) (compound_statement "{\n      puVar6 = (undefined1 *)param_1[2];\n    }" ({ "{") (expression_statement "puVar6 = (undefined1 *)param_1[2];" (assignment_expression "puVar6 = (undefined1 *)param_1[2]" (identifier "puVar6") (= "=") (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[6] = (int)puVar6;" (assignment_expression "param_1[6] = (int)puVar6" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6"))) (; ";")) (if_statement "if (local_2c == FUN_00084390) {\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }\n    else {\n      cVar5 = (*local_2c)(piVar9);\n    }" (if "if") (parenthesized_expression "(local_2c == FUN_00084390)" (( "(") (binary_expression "local_2c == FUN_00084390" (identifier "local_2c") (== "==") (identifier "FUN_00084390")) () ")")) (compound_statement "{\n      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);\n    }" ({ "{") (expression_statement "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);" (assignment_expression "cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9)" (identifier "cVar5") (= "=") (call_expression "(**(code **)(iVar12 + 0xe8))(piVar9)" (parenthesized_expression "(**(code **)(iVar12 + 0xe8))" (( "(") (pointer_expression "**(code **)(iVar12 + 0xe8)" (* "*") (pointer_expression "*(code **)(iVar12 + 0xe8)" (* "*") (cast_expression "(code **)(iVar12 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0xe8)" (( "(") (binary_expression "iVar12 + 0xe8" (identifier "iVar12") (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      cVar5 = (*local_2c)(piVar9);\n    }" (else "else") (compound_statement "{\n      cVar5 = (*local_2c)(piVar9);\n    }" ({ "{") (expression_statement "cVar5 = (*local_2c)(piVar9);" (assignment_expression "cVar5 = (*local_2c)(piVar9)" (identifier "cVar5") (= "=") (call_expression "(*local_2c)(piVar9)" (parenthesized_expression "(*local_2c)" (( "(") (pointer_expression "*local_2c" (* "*") (identifier "local_2c")) () ")")) (argument_list "(piVar9)" (( "(") (identifier "piVar9") () ")")))) (; ";")) (} "}")))) (expression_statement "sVar8 = (short)*local_34;" (assignment_expression "sVar8 = (short)*local_34" (identifier "sVar8") (= "=") (cast_expression "(short)*local_34" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (pointer_expression "*local_34" (* "*") (identifier "local_34")))) (; ";")) (if_statement "if (cVar5 != '\0') {\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));\n    }" ({ "{") (expression_statement "sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));" (assignment_expression "sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" (identifier "sVar8") (= "=") (call_expression "CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1))" (identifier "CONCAT11") (argument_list "((char)*local_34,*(undefined1 *)((int)local_34 + 1))" (( "(") (cast_expression "(char)*local_34" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*local_34" (* "*") (identifier "local_34"))) (, ",") (pointer_expression "*(undefined1 *)((int)local_34 + 1)" (* "*") (cast_expression "(undefined1 *)((int)local_34 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_34 + 1)" (( "(") (binary_expression "(int)local_34 + 1" (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34")) (+ "+") (number_literal "1")) () ")")))) () ")")))) (; ";")) (} "}"))) (if_statement "if (sVar8 == 2) {\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }" (if "if") (parenthesized_expression "(sVar8 == 2)" (( "(") (binary_expression "sVar8 == 2" (identifier "sVar8") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));\n      (**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);\n      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);\n      if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }\n    }" ({ "{") (expression_statement "puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));" (assignment_expression "puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]))" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)((int)local_34 + (2 - param_1[1]))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_34 + (2 - param_1[1]))" (( "(") (binary_expression "(int)local_34 + (2 - param_1[1])" (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34")) (+ "+") (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") (] "]"))) () ")"))) () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);" (call_expression "(**(code **)(*(int *)param_1[0xc] + 0x14))\n                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10)" (parenthesized_expression "(**(code **)(*(int *)param_1[0xc] + 0x14))" (( "(") (pointer_expression "**(code **)(*(int *)param_1[0xc] + 0x14)" (* "*") (pointer_expression "*(code **)(*(int *)param_1[0xc] + 0x14)" (* "*") (cast_expression "(code **)(*(int *)param_1[0xc] + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1[0xc] + 0x14)" (( "(") (binary_expression "*(int *)param_1[0xc] + 0x14" (pointer_expression "*(int *)param_1[0xc]" (* "*") (cast_expression "(int *)param_1[0xc]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10)" (( "(") (cast_expression "(int *)param_1[0xc]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (, ",") (identifier "puVar6") (, ",") (binary_expression "(int)puVar6 >> 0x1f" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (>> ">>") (number_literal "0x1f")) (, ",") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")"))) (; ";")) (expression_statement "puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);" (assignment_expression "puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)((int)local_34 + param_1[4] * 2 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_34 + param_1[4] * 2 + 2)" (( "(") (binary_expression "(int)local_34 + param_1[4] * 2 + 2" (binary_expression "(int)local_34 + param_1[4] * 2" (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34")) (+ "+") (binary_expression "param_1[4] * 2" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (* "*") (number_literal "2"))) (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (puVar6 < (undefined1 *)param_1[2]) {\n        param_1[5] = (int)puVar6;\n        return 1;\n      }" (if "if") (parenthesized_expression "(puVar6 < (undefined1 *)param_1[2])" (( "(") (binary_expression "puVar6 < (undefined1 *)param_1[2]" (identifier "puVar6") (< "<") (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[5] = (int)puVar6;\n        return 1;\n      }" ({ "{") (expression_statement "param_1[5] = (int)puVar6;" (assignment_expression "param_1[5] = (int)puVar6" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* 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_10;
  type_4 *var_9;
  type_3 var_14;
  type_5 *pDVar4;
  char var_11;
  type_3 var_4;
  type_6 *puVar8;
  type_3 var_13;
  type_7 return_value;
  type_8 *var_1;
  short var_16;
  type_9 *pRVar12;
  int var_5;
  int var_6;
  type_4 **pp_Var15;
  type_3 *local_34;
  type_4 *var_12;
  int var_8;
  
  var_1 = this->buffer_;
  if (var_1 == (type_8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/dwarf_reader.cc",0x22f,"read_header");
  }
  if ((-1 < var_3) &&
     (var_5 = (int)((ulonglong)(var_3 + 0xe) >> 0x20),
     var_4 = (int)this->buffer_end_ - (int)var_1, var_6 = (int)var_4 >> 0x1f,
     var_4 = (type_3)((type_3)(var_3 + 0xe) < var_4), var_8 = var_5 - var_6,
     (var_7(var_5,var_6) != var_7(var_8,var_4)) != (int)(var_8 - var_4) < 0)) {
    var_10 = (type_3 *)(var_1 + (int)var_3);
    pRVar12 = this->dwinfo_->object_;
    pp_Var15 = (pRVar12->super_Object)._vptr_Object;
    var_9 = pp_Var15[3];
    if (var_9 == type_9::is_big_endian) {
      var_8 = (*pp_Var15[0x3a])(pRVar12);
      var_11 = (char)var_8;
    }
    else {
      var_8 = (*var_9)(pRVar12);
      var_11 = (char)var_8;
    }
    var_4 = *var_10;
    local_34 = var_10 + 1;
    if (var_11 != '\0') {
      var_4 = var_4 >> 0x18 | (var_4 & 0xff0000) >> 8 | (var_4 & 0xff00) << 8 | var_4 << 0x18;
    }
    pRVar12 = this->dwinfo_->object_;
    pp_Var15 = (pRVar12->super_Object)._vptr_Object;
    var_12 = pp_Var15[3];
    if (var_4 == 0xffffffff) {
      if (var_12 == type_9::is_big_endian) {
        var_8 = (*pp_Var15[0x3a])(pRVar12);
        var_11 = (char)var_8;
      }
      else {
        var_8 = (*var_12)(pRVar12);
        var_11 = (char)var_8;
      }
      var_14 = var_10[1];
      var_13 = var_10[2];
      var_4 = var_14;
      if (var_11 != '\0') {
        var_4 = var_13 >> 0x18 | (var_13 & 0xff0000) >> 8 | (var_13 & 0xff00) << 8 | var_13 << 0x18;
        var_13 = var_14 >> 0x18 | (var_14 & 0xff0000) >> 8 | (var_14 & 0xff00) << 8 | var_14 << 0x18;
      }
      this->offset_size_ = 8;
      *(type_3 *)&this->unit_length_ = var_4 + 0xc;
      local_34 = var_10 + 3;
      pDVar4 = this->dwinfo_;
      *(type_3 *)((int)&this->unit_length_ + 4) = var_13 + (0xfffffff3 < var_4);
      pRVar12 = pDVar4->object_;
      pp_Var15 = (pRVar12->super_Object)._vptr_Object;
      var_12 = pp_Var15[3];
    }
    else {
      this->offset_size_ = 4;
      *(type_3 *)&this->unit_length_ = var_4 + 4;
      *(type_3 *)((int)&this->unit_length_ + 4) = (type_3)(0xfffffffb < var_4);
    }
    var_1 = (type_8 *)(var_4 + (int)local_34);
    if (this->buffer_end_ < (type_8 *)(var_4 + (int)local_34)) {
      var_1 = this->buffer_end_;
    }
    this->end_of_table_ = var_1;
    if (var_12 == type_9::is_big_endian) {
      var_8 = (*pp_Var15[0x3a])(pRVar12);
      var_11 = (char)var_8;
    }
    else {
      var_8 = (*var_12)(pRVar12);
      var_11 = (char)var_8;
    }
    var_16 = (short)*local_34;
    if (var_11 != '\0') {
      var_16 = var_15((char)*local_34,*(type_6 *)((int)local_34 + 1));
    }
    if (var_16 == 2) {
      puVar8 = (type_6 *)((int)local_34 + (2 - (int)this->buffer_));
      (*this->reloc_mapper_->_vptr_Elf_reloc_mapper[5])
                (this->reloc_mapper_,puVar8,(int)puVar8 >> 0x1f,&this->cu_offset_);
      var_1 = (type_8 *)((int)local_34 + 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier)))))) right: (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) right: (number_literal))) right: (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))))) right: (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) right: (number_literal)))))))))) 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: (primitive_type) 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: (pointer_expression argument: (identifier)) 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: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) 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: (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 (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (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: (subscript_expression argument: (identifier) index: (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: (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: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (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)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (primitive_type)) 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: (primitive_type)) 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 (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))))) (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: (primitive_type)) value: (identifier)) right: (number_literal))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal))))))))) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))))))) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (primitive_type)) value: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (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: (primitive_type)) value: (identifier)))) (return_statement (number_literal)))))))) (return_statement (number_literal)))))

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

undefined4 MASKED(int *param_1,uint param_2,int param_3)

{
  uint *puVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  char cVar5;
  undefined1 *puVar6;
  uint uVar7;
  short sVar8;
  int *piVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint *local_34;
  code *local_2c;
  
  iVar12 = param_1[1];
  if (iVar12 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0007ac80("../../gold/dwarf_reader.cc",0x22f,"read_header",&__DT_PLTGOT);
  }
  if ((-1 < param_3) &&
     (param_3 = param_3 + (uint)(0xfffffff1 < param_2), iVar11 = param_1[2] - iVar12 >> 0x1f,
     uVar10 = (uint)(param_2 + 0xe < (uint)(param_1[2] - iVar12)), iVar4 = param_3 - iVar11,
     (SBORROW4(param_3,iVar11) != SBORROW4(iVar4,uVar10)) != (int)(iVar4 - uVar10) < 0)) {
    puVar1 = (uint *)(iVar12 + param_2);
    piVar9 = *(int **)(*param_1 + 8);
    pcVar2 = *(code **)(*piVar9 + 0xc);
    if (pcVar2 == FUN_00084390) {
      cVar5 = (**(code **)(*piVar9 + 0xe8))(piVar9);
    }
    else {
      cVar5 = (*pcVar2)(piVar9);
    }
    uVar10 = *puVar1;
    local_34 = puVar1 + 1;
    if (cVar5 != '\0') {
      uVar10 = uVar10 >> 0x18 | (uVar10 & 0xff0000) >> 8 | (uVar10 & 0xff00) << 8 | uVar10 << 0x18;
    }
    piVar9 = *(int **)(*param_1 + 8);
    iVar12 = *piVar9;
    local_2c = *(code **)(iVar12 + 0xc);
    if (uVar10 == 0xffffffff) {
      if (local_2c == FUN_00084390) {
        cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);
      }
      else {
        cVar5 = (*local_2c)(piVar9);
      }
      uVar3 = puVar1[1];
      uVar7 = puVar1[2];
      uVar10 = uVar3;
      if (cVar5 != '\0') {
        uVar10 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
        uVar7 = uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar3 << 0x18;
      }
      param_1[4] = 8;
      param_1[8] = uVar10 + 0xc;
      local_34 = puVar1 + 3;
      param_1[9] = uVar7 + (0xfffffff3 < uVar10);
      piVar9 = *(int **)(*param_1 + 8);
      iVar12 = *piVar9;
      local_2c = *(code **)(iVar12 + 0xc);
    }
    else {
      param_1[4] = 4;
      param_1[8] = uVar10 + 4;
      param_1[9] = (uint)(0xfffffffb < uVar10);
    }
    puVar6 = (undefined1 *)(uVar10 + (int)local_34);
    if ((undefined1 *)param_1[2] < (undefined1 *)(uVar10 + (int)local_34)) {
      puVar6 = (undefined1 *)param_1[2];
    }
    param_1[6] = (int)puVar6;
    if (local_2c == FUN_00084390) {
      cVar5 = (**(code **)(iVar12 + 0xe8))(piVar9);
    }
    else {
      cVar5 = (*local_2c)(piVar9);
    }
    sVar8 = (short)*local_34;
    if (cVar5 != '\0') {
      sVar8 = CONCAT11((char)*local_34,*(undefined1 *)((int)local_34 + 1));
    }
    if (sVar8 == 2) {
      puVar6 = (undefined1 *)((int)local_34 + (2 - param_1[1]));
      (**(code **)(*(int *)param_1[0xc] + 0x14))
                ((int *)param_1[0xc],puVar6,(int)puVar6 >> 0x1f,param_1 + 10);
      puVar6 = (undefined1 *)((int)local_34 + param_1[4] * 2 + 2);
      if (puVar6 < (undefined1 *)param_1[2]) {
        param_1[5] = (int)puVar6;
        return 1;
      }
    }
  }
  return 0;
}

