
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: Elf_Addr symbol_value(Output_reloc<9,_false,_64,_false> * this, Addend
   addend) */

Elf_Addr __thiscall
gold::Output_reloc<9,_false,_64,_false>::symbol_value
          (Output_reloc<9,_false,_64,_false> *this,Addend addend)

{
  long lVar1;
  uint uVar2;
  _func_int_varargs *p_Var3;
  Target *pTVar4;
  size_type sVar5;
  Merged_symbol_value<64> *this_00;
  ulong uVar6;
  _Hash_node_base *p_Var7;
  int iVar8;
  undefined4 extraout_var;
  undefined4 extraout_var_00;
  undefined4 extraout_var_01;
  Elf_Addr EVar9;
  _Hash_node_base *input_offset;
  ulong uVar10;
  _Hash_node_base *p_Var11;
  __bucket_type p_Var12;
  __bucket_type p_Var13;
  Relobj *object;
  
  uVar2 = this->local_sym_index_;
  if (uVar2 == 0xffffffff) {
    if ((-1 < (char)this->field_0x1f) ||
       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1
       )) {
      return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_
             + addend;
    }
    if (parameters->target_ != (Target *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      iVar8 = (*parameters->target_->_vptr_Target[0xd])();
      return CONCAT44(extraout_var,iVar8);
    }
LAB_00217996:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x69,"target");
  }
  if (uVar2 == 0xfffffffe) {
    if ((char)this->field_0x1f < '\0') {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value");
    }
    if (((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0)
    {
      return (Elf_Addr)
             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend);
    }
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xc5,"address");
  }
  if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((this->field_0x1f & 0x40) != 0)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.cc",0x485,"symbol_value");
  }
  p_Var3 = (((this->u1_).relobj)->super_Relobj).super_Object._vptr_Object[0x3b];
  if (p_Var3 != Sized_relobj<64,_false>::sized_relobj) {
    iVar8 = (*p_Var3)();
    object = (Relobj *)CONCAT44(extraout_var_00,iVar8);
    if (object != (Relobj *)0x0) {
      if (-1 < (char)this->field_0x1f) {
        sVar5 = object[2].super_Object.name_._M_string_length;
        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3
                    ) * -0x5555555555555555) <= (ulong)uVar2) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");
        }
        lVar1 = sVar5 + (ulong)uVar2 * 0x18;
        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {
          return *(long *)(lVar1 + 0x10) + addend;
        }
        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/object.h",0x6ab,"value");
        }
        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);
        input_offset = (_Hash_node_base *)this_00->input_value_;
        if (addend < 0xffffff00) {
          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);
          addend = 0;
        }
        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;
        uVar10 = (ulong)input_offset % uVar6;
        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];
        if (p_Var13 != (__bucket_type)0x0) {
          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;
          p_Var7 = p_Var13->_M_nxt;
          while (p_Var12 = p_Var7, p_Var11 != input_offset) {
            p_Var7 = p_Var12->_M_nxt;
            if ((p_Var7 == (_Hash_node_base *)0x0) ||
               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))
            goto LAB_00217920;
          }
          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {
            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;
          }
        }
LAB_00217920:
        EVar9 = Merged_symbol_value<64>::value_from_output_section
                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);
        return EVar9 + addend;
      }
      pTVar4 = parameters->target_;
      if (pTVar4 != (Target *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);
        return CONCAT44(extraout_var_01,iVar8);
      }
      goto LAB_00217996;
    }
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.cc",0x489,"symbol_value");
}



long FUN_00217730(long *param_1,ulong param_2)

{
  long lVar1;
  uint uVar2;
  ulong *puVar3;
  long *plVar4;
  long lVar5;
  ulong uVar6;
  ulong uVar7;
  ulong uVar8;
  long *plVar9;
  long *plVar10;
  
  uVar2 = *(uint *)(param_1 + 3);
  if (uVar2 == 0xffffffff) {
    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {
      return *(long *)(*param_1 + 0x40) + param_2;
    }
    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();
      return lVar5;
    }
  }
  else {
    if (uVar2 == 0xfffffffe) {
      if (*(char *)((long)param_1 + 0x1f) < '\0') {
                    /* WARNING: Subroutine does not return */
        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");
      }
      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {
        return param_2 + *(long *)(*param_1 + 8);
      }
                    /* WARNING: Subroutine does not return */
      FUN_0018ff20("../../gold/output.h",0xc5,"address");
    }
    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {
                    /* WARNING: Subroutine does not return */
      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");
    }
    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||
       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {
                    /* WARNING: Subroutine does not return */
      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");
    }
    if (-1 < *(char *)((long)param_1 + 0x1f)) {
      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)
          <= (ulong)uVar2) {
                    /* WARNING: Subroutine does not return */
        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");
      }
      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;
      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {
        return *(long *)(lVar1 + 0x10) + param_2;
      }
      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0018ff20("../../gold/object.h",0x6ab,"value");
      }
      puVar3 = *(ulong **)(lVar1 + 0x10);
      uVar6 = *puVar3;
      if (param_2 < 0xffffff00) {
        uVar6 = uVar6 + param_2;
        param_2 = 0;
      }
      uVar7 = uVar6 % puVar3[3];
      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);
      if (plVar10 != (long *)0x0) {
        uVar8 = ((long *)*plVar10)[1];
        plVar4 = (long *)*plVar10;
        while (plVar9 = plVar4, uVar8 != uVar6) {
          plVar4 = (long *)*plVar9;
          if ((plVar4 == (long *)0x0) ||
             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;
        }
        if (*plVar10 != 0) {
          return param_2 + *(long *)(*plVar10 + 0x10);
        }
      }
LAB_00217920:
      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);
      return lVar5 + param_2;
    }
    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);
    if (plVar10 != (long *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);
      return lVar5;
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0018ff20("../../gold/parameters.h",0x69,"target");
}


PUSH R12
MOV R12,RSI
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV EBX,dword ptr [RDI + 0x18]
CMP EBX,-0x1
JZ 0x002177c8
CMP EBX,-0x2
JZ 0x002177a0
LEA EAX,[RBX + 0x4]
CMP EAX,0x1
JBE 0x00217936
TEST EBX,EBX
JZ 0x00217936
TEST byte ptr [RDI + 0x1f],0x40
JNZ 0x00217936
MOV RDI,qword ptr [RDI]
LEA RDX,[0x1990e0]
MOV RAX,qword ptr [RDI]
MOV RAX,qword ptr [RAX + 0x1d8]
CMP RAX,RDX
JNZ 0x00217810
LEA RDX,[0x39a098]
MOV ESI,0x489
LEA RDI,[0x398bd6]
CALL 0x0018ff20
CMP byte ptr [RDI + 0x1f],0x0
JS 0x002179ae
MOV RAX,qword ptr [RDI]
TEST byte ptr [RAX + 0x20],0x1
JZ 0x0021794e
ADD R12,qword ptr [RAX + 0x8]
MOV RAX,R12
POP RBX
POP RBP
POP R12
RET
CMP byte ptr [RDI + 0x1f],0x0
MOV RSI,qword ptr [RDI]
JNS 0x00217800
CMP dword ptr [RSI + 0x24],-0x1
JZ 0x00217800
MOV RAX,qword ptr [0x0045c708]
MOV RDI,qword ptr [RAX + 0x18]
TEST RDI,RDI
JZ 0x00217996
MOV RAX,qword ptr [RDI]
POP RBX
POP RBP
POP R12
MOV RAX,qword ptr [RAX + 0x68]
JMP RAX
MOV RAX,qword ptr [RSI + 0x40]
POP RBX
POP RBP
ADD RAX,R12
POP R12
RET
CALL RAX
MOV RSI,RAX
TEST RAX,RAX
JZ 0x00217786
CMP byte ptr [RBP + 0x1f],0x0
JNS 0x00217850
MOV RAX,qword ptr [0x0045c708]
MOV RDI,qword ptr [RAX + 0x18]
TEST RDI,RDI
JZ 0x00217996
MOV RAX,qword ptr [RDI]
MOV EDX,EBX
POP RBX
POP RBP
POP R12
MOV RAX,qword ptr [RAX + 0x70]
JMP RAX
MOV RDX,qword ptr [RAX + 0x160]
MOV RAX,qword ptr [RAX + 0x168]
MOV RCX,-0x5555555555555555
SUB RAX,RDX
SAR RAX,0x3
IMUL RAX,RCX
CMP RBX,RAX
JNC 0x0021797e
LEA RAX,[RBX + RBX*0x2]
LEA RBP,[RDX + RAX*0x8]
MOVZX EAX,byte ptr [RBP + 0xb]
TEST AL,AL
JS 0x00217910
TEST AL,0x8
JZ 0x00217966
MOV RDI,qword ptr [RBP + 0x10]
MOV EAX,0xfffffeff
MOV RCX,qword ptr [RDI]
CMP R12,RAX
JA 0x002178af
ADD RCX,R12
XOR R12D,R12D
MOV R10,qword ptr [RDI + 0x18]
MOV RAX,RCX
XOR EDX,EDX
DIV R10
MOV RAX,qword ptr [RDI + 0x10]
MOV R11,qword ptr [RAX + RDX*0x8]
MOV RBX,RDX
TEST R11,R11
JZ 0x00217920
MOV R9,qword ptr [R11]
MOV R8,qword ptr [R9 + 0x8]
JMP 0x002178f7
MOV RDX,qword ptr [R9]
TEST RDX,RDX
JZ 0x00217920
MOV R8,qword ptr [RDX + 0x8]
MOV R11,R9
MOV R9,RDX
XOR EDX,EDX
MOV RAX,R8
DIV R10
CMP RDX,RBX
JNZ 0x00217920
CMP R8,RCX
JNZ 0x002178d8
MOV RAX,qword ptr [R11]
TEST RAX,RAX
JZ 0x00217920
ADD R12,qword ptr [RAX + 0x10]
POP RBX
MOV RAX,R12
POP RBP
POP R12
RET
MOV RAX,qword ptr [RBP + 0x10]
ADD RAX,R12
JMP 0x002177be
MOV EDX,dword ptr [RBP + 0x8]
AND EDX,0x7ffffff
CALL 0x00258400
ADD RAX,R12
JMP 0x002177be
LEA RDX,[0x39a098]
MOV ESI,0x485
LEA RDI,[0x398bd6]
CALL 0x0018ff20
LEA RDX,[0x39b088]
MOV ESI,0xc5
LEA RDI,[0x387398]
CALL 0x0018ff20
LEA RDX,[0x39a081]
MOV ESI,0x6ab
LEA RDI,[0x3873ac]
CALL 0x0018ff20
LEA RDX,[0x39a088]
MOV ESI,0x8c1
LEA RDI,[0x3873ac]
CALL 0x0018ff20
LEA RDX,[0x39b13b]
MOV ESI,0x69
LEA RDI,[0x382279]
CALL 0x0018ff20
LEA RDX,[0x39a098]
MOV ESI,0x47f
LEA RDI,[0x398bd6]
CALL 0x0018ff20
(translation_unit "long FUN_00217730(long *param_1,ulong param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}\n\n" (function_definition "long FUN_00217730(long *param_1,ulong param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00217730(long *param_1,ulong param_2)" identifier (parameter_list "(long *param_1,ulong param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 3);" (assignment_expression "uVar2 = *(uint *)(param_1 + 3)" identifier = (pointer_expression "*(uint *)(param_1 + 3)" * (cast_expression "(uint *)(param_1 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }" { (if_statement "if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }" if (parenthesized_expression "((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1))" ( (binary_expression "(-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)" (parenthesized_expression "(-1 < *(char *)((long)param_1 + 0x1f))" ( (binary_expression "-1 < *(char *)((long)param_1 + 0x1f)" number_literal < (pointer_expression "*(char *)((long)param_1 + 0x1f)" * (cast_expression "(char *)((long)param_1 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) || (parenthesized_expression "(*(int *)(*param_1 + 0x24) == -1)" ( (binary_expression "*(int *)(*param_1 + 0x24) == -1" (pointer_expression "*(int *)(*param_1 + 0x24)" * (cast_expression "(int *)(*param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x24)" ( (binary_expression "*param_1 + 0x24" (pointer_expression "*param_1" * identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }" { (return_statement "return *(long *)(*param_1 + 0x40) + param_2;" return (binary_expression "*(long *)(*param_1 + 0x40) + param_2" (pointer_expression "*(long *)(*param_1 + 0x40)" * (cast_expression "(long *)(*param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x40)" ( (binary_expression "*param_1 + 0x40" (pointer_expression "*param_1" * identifier) + number_literal) )))) + identifier) ;) })) (if_statement "if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }" if (parenthesized_expression "(*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0)" ( (binary_expression "*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0" (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" ( (binary_expression "PTR_DAT_0045c708 + 0x18" identifier + number_literal) )))) != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }" { comment comment (expression_statement "lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();" (assignment_expression "lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))()" identifier = (call_expression "(**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))()" (parenthesized_expression "(**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))" ( (pointer_expression "**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" * (pointer_expression "*(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" * (cast_expression "(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" ( (binary_expression "**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68" (pointer_expression "**(long **)(PTR_DAT_0045c708 + 0x18)" * (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" ( (binary_expression "PTR_DAT_0045c708 + 0x18" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return lVar5;" return identifier ;) })) }) (else_clause "else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" else (compound_statement "{\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" { (if_statement "if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }" if (parenthesized_expression "(uVar2 == 0xfffffffe)" ( (binary_expression "uVar2 == 0xfffffffe" identifier == number_literal) )) (compound_statement "{\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }" { (if_statement "if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }" if (parenthesized_expression "(*(char *)((long)param_1 + 0x1f) < '\0')" ( (binary_expression "*(char *)((long)param_1 + 0x1f) < '\0'" (pointer_expression "*(char *)((long)param_1 + 0x1f)" * (cast_expression "(char *)((long)param_1 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }" { comment (expression_statement "FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x47f,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }" if (parenthesized_expression "((*(byte *)(*param_1 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(*param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(*param_1 + 0x20) & 1" (pointer_expression "*(byte *)(*param_1 + 0x20)" * (cast_expression "(byte *)(*param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x20)" ( (binary_expression "*param_1 + 0x20" (pointer_expression "*param_1" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        return param_2 + *(long *)(*param_1 + 8);\n      }" { (return_statement "return param_2 + *(long *)(*param_1 + 8);" return (binary_expression "param_2 + *(long *)(*param_1 + 8)" identifier + (pointer_expression "*(long *)(*param_1 + 8)" * (cast_expression "(long *)(*param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) })) comment (expression_statement "FUN_0018ff20("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0018ff20("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (if_statement "if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }" if (parenthesized_expression "(((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0))" ( (binary_expression "((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)" (parenthesized_expression "((uVar2 + 4 < 2) || (uVar2 == 0))" ( (binary_expression "(uVar2 + 4 < 2) || (uVar2 == 0)" (parenthesized_expression "(uVar2 + 4 < 2)" ( (binary_expression "uVar2 + 4 < 2" (binary_expression "uVar2 + 4" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x1f) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x1f) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x1f) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x1f)" * (cast_expression "(byte *)((long)param_1 + 0x1f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }" { comment (expression_statement "FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x485,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (if_statement "if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }" if (parenthesized_expression "((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0))" ( (binary_expression "(*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)" (parenthesized_expression "(*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0)" ( (binary_expression "*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0" (pointer_expression "*(code **)(*(long *)*param_1 + 0x1d8)" * (cast_expression "(code **)(*(long *)*param_1 + 0x1d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*param_1 + 0x1d8)" ( (binary_expression "*(long *)*param_1 + 0x1d8" (pointer_expression "*(long *)*param_1" * (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) + number_literal) )))) == identifier) )) || (parenthesized_expression "(lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)" ( (comma_expression "lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0" (assignment_expression "lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))()" identifier = (call_expression "(**(code **)(*(long *)*param_1 + 0x1d8))()" (parenthesized_expression "(**(code **)(*(long *)*param_1 + 0x1d8))" ( (pointer_expression "**(code **)(*(long *)*param_1 + 0x1d8)" * (pointer_expression "*(code **)(*(long *)*param_1 + 0x1d8)" * (cast_expression "(code **)(*(long *)*param_1 + 0x1d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*param_1 + 0x1d8)" ( (binary_expression "*(long *)*param_1 + 0x1d8" (pointer_expression "*(long *)*param_1" * (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) + number_literal) ))))) )) (argument_list "()" ( )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }" { comment (expression_statement "FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x489,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (if_statement "if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }" if (parenthesized_expression "(-1 < *(char *)((long)param_1 + 0x1f))" ( (binary_expression "-1 < *(char *)((long)param_1 + 0x1f)" number_literal < (pointer_expression "*(char *)((long)param_1 + 0x1f)" * (cast_expression "(char *)((long)param_1 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }" { (if_statement "if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }" if (parenthesized_expression "((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2)" ( (binary_expression "(ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2" (call_expression "(ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3)" ( (binary_expression "*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3" (binary_expression "*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160)" (pointer_expression "*(long *)(lVar5 + 0x168)" * (cast_expression "(long *)(lVar5 + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x168)" ( (binary_expression "lVar5 + 0x168" identifier + number_literal) )))) - (pointer_expression "*(long *)(lVar5 + 0x160)" * (cast_expression "(long *)(lVar5 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x160)" ( (binary_expression "lVar5 + 0x160" identifier + number_literal) ))))) >> number_literal) )) * number_literal) ))) <= (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }" { comment (expression_statement "FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");" (call_expression "FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol")" identifier (argument_list "("../../gold/object.h",0x8c1,"local_symbol")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""local_symbol"" " string_content ") ))) ;) })) (expression_statement "lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;" (assignment_expression "lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18" identifier = (binary_expression "*(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18" (pointer_expression "*(long *)(lVar5 + 0x160)" * (cast_expression "(long *)(lVar5 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x160)" ( (binary_expression "lVar5 + 0x160" identifier + number_literal) )))) + (binary_expression "(ulong)uVar2 * 0x18" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal))) ;) (if_statement "if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }" if (parenthesized_expression "((char)*(byte *)(lVar1 + 0xb) < '\0')" ( (binary_expression "(char)*(byte *)(lVar1 + 0xb) < '\0'" (cast_expression "(char)*(byte *)(lVar1 + 0xb)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(lVar1 + 0xb)" * (cast_expression "(byte *)(lVar1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xb)" ( (binary_expression "lVar1 + 0xb" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }" { (return_statement "return *(long *)(lVar1 + 0x10) + param_2;" return (binary_expression "*(long *)(lVar1 + 0x10) + param_2" (pointer_expression "*(long *)(lVar1 + 0x10)" * (cast_expression "(long *)(lVar1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) )))) + identifier) ;) })) (if_statement "if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }" if (parenthesized_expression "((*(byte *)(lVar1 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(lVar1 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(lVar1 + 0xb) & 8)" ( (binary_expression "*(byte *)(lVar1 + 0xb) & 8" (pointer_expression "*(byte *)(lVar1 + 0xb)" * (cast_expression "(byte *)(lVar1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xb)" ( (binary_expression "lVar1 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }" { comment (expression_statement "FUN_0018ff20("../../gold/object.h",0x6ab,"value");" (call_expression "FUN_0018ff20("../../gold/object.h",0x6ab,"value")" identifier (argument_list "("../../gold/object.h",0x6ab,"value")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""value"" " string_content ") ))) ;) })) (expression_statement "puVar3 = *(ulong **)(lVar1 + 0x10);" (assignment_expression "puVar3 = *(ulong **)(lVar1 + 0x10)" identifier = (pointer_expression "*(ulong **)(lVar1 + 0x10)" * (cast_expression "(ulong **)(lVar1 + 0x10)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *puVar3;" (assignment_expression "uVar6 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (if_statement "if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }" if (parenthesized_expression "(param_2 < 0xffffff00)" ( (binary_expression "param_2 < 0xffffff00" identifier < number_literal) )) (compound_statement "{\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }" { (expression_statement "uVar6 = uVar6 + param_2;" (assignment_expression "uVar6 = uVar6 + param_2" identifier = (binary_expression "uVar6 + param_2" identifier + identifier)) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) })) (expression_statement "uVar7 = uVar6 % puVar3[3];" (assignment_expression "uVar7 = uVar6 % puVar3[3]" identifier = (binary_expression "uVar6 % puVar3[3]" identifier % (subscript_expression "puVar3[3]" identifier [ number_literal ]))) ;) (expression_statement "plVar10 = *(long **)(puVar3[2] + uVar7 * 8);" (assignment_expression "plVar10 = *(long **)(puVar3[2] + uVar7 * 8)" identifier = (pointer_expression "*(long **)(puVar3[2] + uVar7 * 8)" * (cast_expression "(long **)(puVar3[2] + uVar7 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3[2] + uVar7 * 8)" ( (binary_expression "puVar3[2] + uVar7 * 8" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + (binary_expression "uVar7 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }" { (expression_statement "uVar8 = ((long *)*plVar10)[1];" (assignment_expression "uVar8 = ((long *)*plVar10)[1]" identifier = (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" ( (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" identifier = (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier))) ;) (while_statement "while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }" while (parenthesized_expression "(plVar9 = plVar4, uVar8 != uVar6)" ( (comma_expression "plVar9 = plVar4, uVar8 != uVar6" (assignment_expression "plVar9 = plVar4" identifier = identifier) , (binary_expression "uVar8 != uVar6" identifier != identifier)) )) (compound_statement "{\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }" { (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;" if (parenthesized_expression "((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7))" ( (binary_expression "(plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)" (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)" ( (comma_expression "uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7" (assignment_expression "uVar8 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) , (comma_expression "plVar10 = plVar9, uVar8 % puVar3[3] != uVar7" (assignment_expression "plVar10 = plVar9" identifier = identifier) , (binary_expression "uVar8 % puVar3[3] != uVar7" (binary_expression "uVar8 % puVar3[3]" identifier % (subscript_expression "puVar3[3]" identifier [ number_literal ])) != identifier))) ))) )) (goto_statement "goto LAB_00217920;" goto statement_identifier ;)) })) (if_statement "if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }" if (parenthesized_expression "(*plVar10 != 0)" ( (binary_expression "*plVar10 != 0" (pointer_expression "*plVar10" * identifier) != number_literal) )) (compound_statement "{\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }" { (return_statement "return param_2 + *(long *)(*plVar10 + 0x10);" return (binary_expression "param_2 + *(long *)(*plVar10 + 0x10)" identifier + (pointer_expression "*(long *)(*plVar10 + 0x10)" * (cast_expression "(long *)(*plVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar10 + 0x10)" ( (binary_expression "*plVar10 + 0x10" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) ;) })) })) (labeled_statement "LAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);" statement_identifier : (expression_statement "lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);" (assignment_expression "lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" identifier = (call_expression "FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" identifier (argument_list "(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" ( identifier , identifier , (binary_expression "*(uint *)(lVar1 + 8) & 0x7ffffff" (pointer_expression "*(uint *)(lVar1 + 8)" * (cast_expression "(uint *)(lVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) & number_literal) )))) ;)) (return_statement "return lVar5 + param_2;" return (binary_expression "lVar5 + param_2" identifier + identifier) ;) })) (expression_statement "plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);" (assignment_expression "plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" ( (binary_expression "PTR_DAT_0045c708 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }" { comment comment (expression_statement "lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);" (assignment_expression "lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2)" identifier = (call_expression "(**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2)" (parenthesized_expression "(**(code **)(*plVar10 + 0x70))" ( (pointer_expression "**(code **)(*plVar10 + 0x70)" * (pointer_expression "*(code **)(*plVar10 + 0x70)" * (cast_expression "(code **)(*plVar10 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar10 + 0x70)" ( (binary_expression "*plVar10 + 0x70" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) )) (argument_list "(plVar10,lVar5,uVar2)" ( identifier , identifier , identifier )))) ;) (return_statement "return lVar5;" return identifier ;) })) }))) comment (expression_statement "FUN_0018ff20("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0018ff20("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: Elf_Addr symbol_value(Output_reloc<9,_false,_64,_false> * this, Addend\n   addend) */\n\nElf_Addr __thiscall\ngold::Output_reloc<9,_false,_64,_false>::symbol_value\n          (Output_reloc<9,_false,_64,_false> *this,Addend addend)\n\n{\n  long lVar1;\n  uint uVar2;\n  _func_int_varargs *p_Var3;\n  Target *pTVar4;\n  size_type sVar5;\n  Merged_symbol_value<64> *this_00;\n  ulong uVar6;\n  _Hash_node_base *p_Var7;\n  int iVar8;\n  undefined4 extraout_var;\n  undefined4 extraout_var_00;\n  undefined4 extraout_var_01;\n  Elf_Addr EVar9;\n  _Hash_node_base *input_offset;\n  ulong uVar10;\n  _Hash_node_base *p_Var11;\n  __bucket_type p_Var12;\n  __bucket_type p_Var13;\n  Relobj *object;\n  \n  uVar2 = this->local_sym_index_;\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < (char)this->field_0x1f) ||\n       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1\n       )) {\n      return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_\n             + addend;\n    }\n    if (parameters->target_ != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar8 = (*parameters->target_->_vptr_Target[0xd])();\n      return CONCAT44(extraout_var,iVar8);\n    }\nLAB_00217996:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  if (uVar2 == 0xfffffffe) {\n    if ((char)this->field_0x1f < '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value");\n    }\n    if (((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0)\n    {\n      return (Elf_Addr)\n             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend);\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }\n  if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((this->field_0x1f & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x485,"symbol_value");\n  }\n  p_Var3 = (((this->u1_).relobj)->super_Relobj).super_Object._vptr_Object[0x3b];\n  if (p_Var3 != Sized_relobj<64,_false>::sized_relobj) {\n    iVar8 = (*p_Var3)();\n    object = (Relobj *)CONCAT44(extraout_var_00,iVar8);\n    if (object != (Relobj *)0x0) {\n      if (-1 < (char)this->field_0x1f) {\n        sVar5 = object[2].super_Object.name_._M_string_length;\n        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }\n        lVar1 = sVar5 + (ulong)uVar2 * 0x18;\n        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }\n        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }\n        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);\n        input_offset = (_Hash_node_base *)this_00->input_value_;\n        if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }\n        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;\n        uVar10 = (ulong)input_offset % uVar6;\n        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];\n        if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }\nLAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);\n        return EVar9 + addend;\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);\n        return CONCAT44(extraout_var_01,iVar8);\n      }\n      goto LAB_00217996;\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.cc",0x489,"symbol_value");\n}\n\n" comment comment comment (declaration "Elf_Addr __thiscall\ngold::Output_reloc<9,_false,_64,_false>::symbol_value\n          (Output_reloc<9,_false,_64,_false> *this,Addend addend)\n\n{\n  long lVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , (ERROR "_false>::symbol_value\n          (Output_reloc<9,_false,_64,_false> *this,Addend addend)\n\n{\n  long" identifier > : : (function_declarator "symbol_value\n          (Output_reloc<9,_false,_64,_false> *this,Addend addend)" identifier (parameter_list "(Output_reloc<9,_false,_64,_false> *this,Addend addend)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Addend addend" type_identifier identifier) ))) { long) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "_func_int_varargs *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "Target *pTVar4;" type_identifier (pointer_declarator "*pTVar4" * identifier) ;) (declaration "size_type sVar5;" type_identifier identifier ;) (expression_statement "Merged_symbol_value<64> *this_00;" (update_expression "Merged_symbol_value<64> *this_00" (binary_expression "Merged_symbol_value<64> *this_00" (binary_expression "Merged_symbol_value<64" identifier < number_literal) > (pointer_expression "*this_00" * identifier)) --) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "undefined4 extraout_var_00;" type_identifier identifier ;) (declaration "undefined4 extraout_var_01;" type_identifier identifier ;) (declaration "Elf_Addr EVar9;" type_identifier identifier ;) (declaration "_Hash_node_base *input_offset;" type_identifier (pointer_declarator "*input_offset" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var11;" type_identifier (pointer_declarator "*p_Var11" * identifier) ;) (declaration "__bucket_type p_Var12;" type_identifier identifier ;) (declaration "__bucket_type p_Var13;" type_identifier identifier ;) (declaration "Relobj *object;" type_identifier (pointer_declarator "*object" * identifier) ;) (expression_statement "uVar2 = this->local_sym_index_;" (assignment_expression "uVar2 = this->local_sym_index_" identifier = (field_expression "this->local_sym_index_" identifier -> field_identifier)) ;) (if_statement "if (uVar2 == 0xffffffff) {\n    if ((-1 < (char)this->field_0x1f) ||\n       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1\n       )) {\n      return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_\n             + addend;\n    }\n    if (parameters->target_ != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar8 = (*parameters->target_->_vptr_Target[0xd])();\n      return CONCAT44(extraout_var,iVar8);\n    }\nLAB_00217996:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    if ((-1 < (char)this->field_0x1f) ||\n       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1\n       )) {\n      return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_\n             + addend;\n    }\n    if (parameters->target_ != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar8 = (*parameters->target_->_vptr_Target[0xd])();\n      return CONCAT44(extraout_var,iVar8);\n    }\nLAB_00217996:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" { (if_statement "if ((-1 < (char)this->field_0x1f) ||\n       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1\n       )) {\n      return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_\n             + addend;\n    }" if (parenthesized_expression "((-1 < (char)this->field_0x1f) ||\n       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1\n       ))" ( (binary_expression "(-1 < (char)this->field_0x1f) ||\n       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1\n       )" (parenthesized_expression "(-1 < (char)this->field_0x1f)" ( (binary_expression "-1 < (char)this->field_0x1f" number_literal < (cast_expression "(char)this->field_0x1f" ( (type_descriptor "char" primitive_type) ) (field_expression "this->field_0x1f" identifier -> field_identifier))) )) || (parenthesized_expression "(*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1\n       )" ( (binary_expression "*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1" (pointer_expression "*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc)" * (cast_expression "(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc)" ( (binary_expression "(long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc" (cast_expression "(long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2" & (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object" (parenthesized_expression "(((this->u1_).relobj)->super_Relobj)" ( (field_expression "((this->u1_).relobj)->super_Relobj" (parenthesized_expression "((this->u1_).relobj)" ( (field_expression "(this->u1_).relobj" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_\n             + addend;\n    }" { (return_statement "return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_\n             + addend;" return (binary_expression "(long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_\n             + addend" (cast_expression "(long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_" & (field_expression "((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_" (parenthesized_expression "((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)" ( (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.xindex_" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object" (parenthesized_expression "(((this->u1_).relobj)->super_Relobj)" ( (field_expression "((this->u1_).relobj)->super_Relobj" (parenthesized_expression "((this->u1_).relobj)" ( (field_expression "(this->u1_).relobj" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) )) -> field_identifier))) + identifier) ;) })) (if_statement "if (parameters->target_ != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar8 = (*parameters->target_->_vptr_Target[0xd])();\n      return CONCAT44(extraout_var,iVar8);\n    }" if (parenthesized_expression "(parameters->target_ != (Target *)0x0)" ( (binary_expression "parameters->target_ != (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) != (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar8 = (*parameters->target_->_vptr_Target[0xd])();\n      return CONCAT44(extraout_var,iVar8);\n    }" { comment comment (expression_statement "iVar8 = (*parameters->target_->_vptr_Target[0xd])();" (assignment_expression "iVar8 = (*parameters->target_->_vptr_Target[0xd])()" identifier = (call_expression "(*parameters->target_->_vptr_Target[0xd])()" (parenthesized_expression "(*parameters->target_->_vptr_Target[0xd])" ( (pointer_expression "*parameters->target_->_vptr_Target[0xd]" * (subscript_expression "parameters->target_->_vptr_Target[0xd]" (field_expression "parameters->target_->_vptr_Target" (field_expression "parameters->target_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "()" ( )))) ;) (return_statement "return CONCAT44(extraout_var,iVar8);" return (call_expression "CONCAT44(extraout_var,iVar8)" identifier (argument_list "(extraout_var,iVar8)" ( identifier , identifier ))) ;) })) (labeled_statement "LAB_00217996:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;)) })) (if_statement "if (uVar2 == 0xfffffffe) {\n    if ((char)this->field_0x1f < '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value");\n    }\n    if (((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0)\n    {\n      return (Elf_Addr)\n             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend);\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "(uVar2 == 0xfffffffe)" ( (binary_expression "uVar2 == 0xfffffffe" identifier == number_literal) )) (compound_statement "{\n    if ((char)this->field_0x1f < '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value");\n    }\n    if (((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0)\n    {\n      return (Elf_Addr)\n             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend);\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" { (if_statement "if ((char)this->field_0x1f < '\0') {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value");\n    }" if (parenthesized_expression "((char)this->field_0x1f < '\0')" ( (binary_expression "(char)this->field_0x1f < '\0'" (cast_expression "(char)this->field_0x1f" ( (type_descriptor "char" primitive_type) ) (field_expression "this->field_0x1f" identifier -> field_identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x47f,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x47f,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (if_statement "if (((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0)\n    {\n      return (Elf_Addr)\n             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend);\n    }" if (parenthesized_expression "(((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0)" ( (binary_expression "((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0" (parenthesized_expression "((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U)" ( (binary_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U" (subscript_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8]" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object" (parenthesized_expression "(((this->u1_).relobj)->super_Relobj)" ( (field_expression "((this->u1_).relobj)->super_Relobj" (parenthesized_expression "((this->u1_).relobj)" ( (field_expression "(this->u1_).relobj" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (Elf_Addr)\n             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend);\n    }" { (return_statement "return (Elf_Addr)\n             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend);" return (call_expression "(Elf_Addr)\n             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend)" (parenthesized_expression "(Elf_Addr)" ( identifier )) (argument_list "((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend)" ( (binary_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + addend" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object.name_" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object" (parenthesized_expression "(((this->u1_).relobj)->super_Relobj)" ( (field_expression "((this->u1_).relobj)->super_Relobj" (parenthesized_expression "((this->u1_).relobj)" ( (field_expression "(this->u1_).relobj" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) + identifier) ))) ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (if_statement "if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((this->field_0x1f & 0x40) != 0)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x485,"symbol_value");\n  }" if (parenthesized_expression "(((uVar2 + 4 < 2) || (uVar2 == 0)) || ((this->field_0x1f & 0x40) != 0))" ( (binary_expression "((uVar2 + 4 < 2) || (uVar2 == 0)) || ((this->field_0x1f & 0x40) != 0)" (parenthesized_expression "((uVar2 + 4 < 2) || (uVar2 == 0))" ( (binary_expression "(uVar2 + 4 < 2) || (uVar2 == 0)" (parenthesized_expression "(uVar2 + 4 < 2)" ( (binary_expression "uVar2 + 4 < 2" (binary_expression "uVar2 + 4" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "((this->field_0x1f & 0x40) != 0)" ( (binary_expression "(this->field_0x1f & 0x40) != 0" (parenthesized_expression "(this->field_0x1f & 0x40)" ( (binary_expression "this->field_0x1f & 0x40" (field_expression "this->field_0x1f" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.cc",0x485,"symbol_value");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x485,"symbol_value");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x485,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x485,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (expression_statement "p_Var3 = (((this->u1_).relobj)->super_Relobj).super_Object._vptr_Object[0x3b];" (assignment_expression "p_Var3 = (((this->u1_).relobj)->super_Relobj).super_Object._vptr_Object[0x3b]" identifier = (subscript_expression "(((this->u1_).relobj)->super_Relobj).super_Object._vptr_Object[0x3b]" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object._vptr_Object" (field_expression "(((this->u1_).relobj)->super_Relobj).super_Object" (parenthesized_expression "(((this->u1_).relobj)->super_Relobj)" ( (field_expression "((this->u1_).relobj)->super_Relobj" (parenthesized_expression "((this->u1_).relobj)" ( (field_expression "(this->u1_).relobj" (parenthesized_expression "(this->u1_)" ( (field_expression "this->u1_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var3 != Sized_relobj<64,_false>::sized_relobj) {\n    iVar8 = (*p_Var3)();\n    object = (Relobj *)CONCAT44(extraout_var_00,iVar8);\n    if (object != (Relobj *)0x0) {\n      if (-1 < (char)this->field_0x1f) {\n        sVar5 = object[2].super_Object.name_._M_string_length;\n        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }\n        lVar1 = sVar5 + (ulong)uVar2 * 0x18;\n        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }\n        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }\n        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);\n        input_offset = (_Hash_node_base *)this_00->input_value_;\n        if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }\n        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;\n        uVar10 = (ulong)input_offset % uVar6;\n        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];\n        if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }\nLAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);\n        return EVar9 + addend;\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);\n        return CONCAT44(extraout_var_01,iVar8);\n      }\n      goto LAB_00217996;\n    }\n  }" if (parenthesized_expression "(p_Var3 != Sized_relobj<64,_false>::sized_relobj)" ( (comma_expression "p_Var3 != Sized_relobj<64,_false>::sized_relobj" (binary_expression "p_Var3 != Sized_relobj<64" identifier != (binary_expression "Sized_relobj<64" identifier < number_literal)) , (binary_expression "_false>::sized_relobj" identifier > (ERROR "::" : :) identifier)) )) (compound_statement "{\n    iVar8 = (*p_Var3)();\n    object = (Relobj *)CONCAT44(extraout_var_00,iVar8);\n    if (object != (Relobj *)0x0) {\n      if (-1 < (char)this->field_0x1f) {\n        sVar5 = object[2].super_Object.name_._M_string_length;\n        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }\n        lVar1 = sVar5 + (ulong)uVar2 * 0x18;\n        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }\n        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }\n        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);\n        input_offset = (_Hash_node_base *)this_00->input_value_;\n        if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }\n        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;\n        uVar10 = (ulong)input_offset % uVar6;\n        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];\n        if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }\nLAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);\n        return EVar9 + addend;\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);\n        return CONCAT44(extraout_var_01,iVar8);\n      }\n      goto LAB_00217996;\n    }\n  }" { (expression_statement "iVar8 = (*p_Var3)();" (assignment_expression "iVar8 = (*p_Var3)()" identifier = (call_expression "(*p_Var3)()" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "object = (Relobj *)CONCAT44(extraout_var_00,iVar8);" (assignment_expression "object = (Relobj *)CONCAT44(extraout_var_00,iVar8)" identifier = (cast_expression "(Relobj *)CONCAT44(extraout_var_00,iVar8)" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var_00,iVar8)" identifier (argument_list "(extraout_var_00,iVar8)" ( identifier , identifier ))))) ;) (if_statement "if (object != (Relobj *)0x0) {\n      if (-1 < (char)this->field_0x1f) {\n        sVar5 = object[2].super_Object.name_._M_string_length;\n        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }\n        lVar1 = sVar5 + (ulong)uVar2 * 0x18;\n        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }\n        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }\n        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);\n        input_offset = (_Hash_node_base *)this_00->input_value_;\n        if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }\n        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;\n        uVar10 = (ulong)input_offset % uVar6;\n        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];\n        if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }\nLAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);\n        return EVar9 + addend;\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);\n        return CONCAT44(extraout_var_01,iVar8);\n      }\n      goto LAB_00217996;\n    }" if (parenthesized_expression "(object != (Relobj *)0x0)" ( (binary_expression "object != (Relobj *)0x0" identifier != (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (-1 < (char)this->field_0x1f) {\n        sVar5 = object[2].super_Object.name_._M_string_length;\n        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }\n        lVar1 = sVar5 + (ulong)uVar2 * 0x18;\n        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }\n        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }\n        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);\n        input_offset = (_Hash_node_base *)this_00->input_value_;\n        if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }\n        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;\n        uVar10 = (ulong)input_offset % uVar6;\n        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];\n        if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }\nLAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);\n        return EVar9 + addend;\n      }\n      pTVar4 = parameters->target_;\n      if (pTVar4 != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);\n        return CONCAT44(extraout_var_01,iVar8);\n      }\n      goto LAB_00217996;\n    }" { (if_statement "if (-1 < (char)this->field_0x1f) {\n        sVar5 = object[2].super_Object.name_._M_string_length;\n        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }\n        lVar1 = sVar5 + (ulong)uVar2 * 0x18;\n        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }\n        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }\n        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);\n        input_offset = (_Hash_node_base *)this_00->input_value_;\n        if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }\n        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;\n        uVar10 = (ulong)input_offset % uVar6;\n        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];\n        if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }\nLAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);\n        return EVar9 + addend;\n      }" if (parenthesized_expression "(-1 < (char)this->field_0x1f)" ( (binary_expression "-1 < (char)this->field_0x1f" number_literal < (cast_expression "(char)this->field_0x1f" ( (type_descriptor "char" primitive_type) ) (field_expression "this->field_0x1f" identifier -> field_identifier))) )) (compound_statement "{\n        sVar5 = object[2].super_Object.name_._M_string_length;\n        if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }\n        lVar1 = sVar5 + (ulong)uVar2 * 0x18;\n        if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }\n        if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }\n        this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);\n        input_offset = (_Hash_node_base *)this_00->input_value_;\n        if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }\n        uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;\n        uVar10 = (ulong)input_offset % uVar6;\n        p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];\n        if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }\nLAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);\n        return EVar9 + addend;\n      }" { (expression_statement "sVar5 = object[2].super_Object.name_._M_string_length;" (assignment_expression "sVar5 = object[2].super_Object.name_._M_string_length" identifier = (field_expression "object[2].super_Object.name_._M_string_length" (field_expression "object[2].super_Object.name_" (field_expression "object[2].super_Object" (subscript_expression "object[2]" identifier [ number_literal ]) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if ((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }" if (parenthesized_expression "((ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2)" ( (binary_expression "(ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555) <= (ulong)uVar2" (call_expression "(ulong)(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555)" ( (binary_expression "((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    ) * -0x5555555555555555" (parenthesized_expression "((long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3\n                    )" ( (binary_expression "(long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5) >> 3" (cast_expression "(long)(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5)" ( (binary_expression "object[2].super_Object.name_.field_2._M_allocated_capacity - sVar5" (field_expression "object[2].super_Object.name_.field_2._M_allocated_capacity" (field_expression "object[2].super_Object.name_.field_2" (field_expression "object[2].super_Object.name_" (field_expression "object[2].super_Object" (subscript_expression "object[2]" identifier [ number_literal ]) . field_identifier) . field_identifier) . field_identifier) . field_identifier) - identifier) ))) >> number_literal) )) * number_literal) ))) <= (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol");" (call_expression "do_gold_unreachable("../../gold/object.h",0x8c1,"local_symbol")" identifier (argument_list "("../../gold/object.h",0x8c1,"local_symbol")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""local_symbol"" " string_content ") ))) ;) })) (expression_statement "lVar1 = sVar5 + (ulong)uVar2 * 0x18;" (assignment_expression "lVar1 = sVar5 + (ulong)uVar2 * 0x18" identifier = (binary_expression "sVar5 + (ulong)uVar2 * 0x18" identifier + (binary_expression "(ulong)uVar2 * 0x18" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal))) ;) (if_statement "if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n          return *(long *)(lVar1 + 0x10) + addend;\n        }" if (parenthesized_expression "((char)*(byte *)(lVar1 + 0xb) < '\0')" ( (binary_expression "(char)*(byte *)(lVar1 + 0xb) < '\0'" (cast_expression "(char)*(byte *)(lVar1 + 0xb)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(lVar1 + 0xb)" * (cast_expression "(byte *)(lVar1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xb)" ( (binary_expression "lVar1 + 0xb" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return *(long *)(lVar1 + 0x10) + addend;\n        }" { (return_statement "return *(long *)(lVar1 + 0x10) + addend;" return (binary_expression "*(long *)(lVar1 + 0x10) + addend" (pointer_expression "*(long *)(lVar1 + 0x10)" * (cast_expression "(long *)(lVar1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) )))) + identifier) ;) })) (if_statement "if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }" if (parenthesized_expression "((*(byte *)(lVar1 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(lVar1 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(lVar1 + 0xb) & 8)" ( (binary_expression "*(byte *)(lVar1 + 0xb) & 8" (pointer_expression "*(byte *)(lVar1 + 0xb)" * (cast_expression "(byte *)(lVar1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xb)" ( (binary_expression "lVar1 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x6ab,"value");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x6ab,"value");" (call_expression "do_gold_unreachable("../../gold/object.h",0x6ab,"value")" identifier (argument_list "("../../gold/object.h",0x6ab,"value")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""value"" " string_content ") ))) ;) })) (expression_statement "this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10);" (assignment_expression "this_00 = *(Merged_symbol_value<64> **)(lVar1 + 0x10)" identifier = (pointer_expression "*(Merged_symbol_value<64> **)(lVar1 + 0x10)" * (call_expression "(Merged_symbol_value<64> **)(lVar1 + 0x10)" (parenthesized_expression "(Merged_symbol_value<64> **)" ( (binary_expression "Merged_symbol_value<64> **" (binary_expression "Merged_symbol_value<64" identifier < number_literal) > (pointer_expression "**" * (pointer_expression "*" * identifier))) )) (argument_list "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "input_offset = (_Hash_node_base *)this_00->input_value_;" (assignment_expression "input_offset = (_Hash_node_base *)this_00->input_value_" identifier = (cast_expression "(_Hash_node_base *)this_00->input_value_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this_00->input_value_" identifier -> field_identifier))) ;) (if_statement "if (addend < 0xffffff00) {\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }" if (parenthesized_expression "(addend < 0xffffff00)" ( (binary_expression "addend < 0xffffff00" identifier < number_literal) )) (compound_statement "{\n          input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);\n          addend = 0;\n        }" { (expression_statement "input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend);" (assignment_expression "input_offset = (_Hash_node_base *)((long)&input_offset->_M_nxt + addend)" identifier = (cast_expression "(_Hash_node_base *)((long)&input_offset->_M_nxt + addend)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&input_offset->_M_nxt + addend)" ( (binary_expression "(long)&input_offset->_M_nxt + addend" (cast_expression "(long)&input_offset->_M_nxt" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&input_offset->_M_nxt" & (field_expression "input_offset->_M_nxt" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "addend = 0;" (assignment_expression "addend = 0" identifier = number_literal) ;) })) (expression_statement "uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count;" (assignment_expression "uVar6 = (this_00->output_addresses_)._M_h._M_bucket_count" identifier = (field_expression "(this_00->output_addresses_)._M_h._M_bucket_count" (field_expression "(this_00->output_addresses_)._M_h" (parenthesized_expression "(this_00->output_addresses_)" ( (field_expression "this_00->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar10 = (ulong)input_offset % uVar6;" (assignment_expression "uVar10 = (ulong)input_offset % uVar6" identifier = (binary_expression "(ulong)input_offset % uVar6" (cast_expression "(ulong)input_offset" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10];" (assignment_expression "p_Var13 = (this_00->output_addresses_)._M_h._M_buckets[uVar10]" identifier = (subscript_expression "(this_00->output_addresses_)._M_h._M_buckets[uVar10]" (field_expression "(this_00->output_addresses_)._M_h._M_buckets" (field_expression "(this_00->output_addresses_)._M_h" (parenthesized_expression "(this_00->output_addresses_)" ( (field_expression "this_00->output_addresses_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var13 != (__bucket_type)0x0) {\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }" if (parenthesized_expression "(p_Var13 != (__bucket_type)0x0)" ( (binary_expression "p_Var13 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n          p_Var11 = p_Var13->_M_nxt[1]._M_nxt;\n          p_Var7 = p_Var13->_M_nxt;\n          while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }\n          if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }\n        }" { (expression_statement "p_Var11 = p_Var13->_M_nxt[1]._M_nxt;" (assignment_expression "p_Var11 = p_Var13->_M_nxt[1]._M_nxt" identifier = (field_expression "p_Var13->_M_nxt[1]._M_nxt" (subscript_expression "p_Var13->_M_nxt[1]" (field_expression "p_Var13->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var7 = p_Var13->_M_nxt;" (assignment_expression "p_Var7 = p_Var13->_M_nxt" identifier = (field_expression "p_Var13->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (p_Var12 = p_Var7, p_Var11 != input_offset) {\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }" while (parenthesized_expression "(p_Var12 = p_Var7, p_Var11 != input_offset)" ( (comma_expression "p_Var12 = p_Var7, p_Var11 != input_offset" (assignment_expression "p_Var12 = p_Var7" identifier = identifier) , (binary_expression "p_Var11 != input_offset" identifier != identifier)) )) (compound_statement "{\n            p_Var7 = p_Var12->_M_nxt;\n            if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;\n          }" { (expression_statement "p_Var7 = p_Var12->_M_nxt;" (assignment_expression "p_Var7 = p_Var12->_M_nxt" identifier = (field_expression "p_Var12->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))\n            goto LAB_00217920;" if (parenthesized_expression "((p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10))" ( (binary_expression "(p_Var7 == (_Hash_node_base *)0x0) ||\n               (p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10)" (parenthesized_expression "(p_Var7 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var7 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10)" ( (comma_expression "p_Var11 = p_Var7[1]._M_nxt, p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10" (assignment_expression "p_Var11 = p_Var7[1]._M_nxt" identifier = (field_expression "p_Var7[1]._M_nxt" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier)) , (comma_expression "p_Var13 = p_Var12, (ulong)p_Var11 % uVar6 != uVar10" (assignment_expression "p_Var13 = p_Var12" identifier = identifier) , (binary_expression "(ulong)p_Var11 % uVar6 != uVar10" (binary_expression "(ulong)p_Var11 % uVar6" (cast_expression "(ulong)p_Var11" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier) != identifier))) ))) )) (goto_statement "goto LAB_00217920;" goto statement_identifier ;)) })) (if_statement "if (p_Var13->_M_nxt != (_Hash_node_base *)0x0) {\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }" if (parenthesized_expression "(p_Var13->_M_nxt != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var13->_M_nxt != (_Hash_node_base *)0x0" (field_expression "p_Var13->_M_nxt" identifier -> field_identifier) != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;\n          }" { (return_statement "return (long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend;" return (binary_expression "(long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt + addend" (cast_expression "(long)&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt" & (field_expression "(p_Var13->_M_nxt[2]._M_nxt)->_M_nxt" (parenthesized_expression "(p_Var13->_M_nxt[2]._M_nxt)" ( (field_expression "p_Var13->_M_nxt[2]._M_nxt" (subscript_expression "p_Var13->_M_nxt[2]" (field_expression "p_Var13->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier))) + identifier) ;) })) })) (labeled_statement "LAB_00217920:\n        EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);" statement_identifier : (expression_statement "EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset);" (assignment_expression "EVar9 = Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset)" identifier = (binary_expression "Merged_symbol_value<64>::value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset)" (binary_expression "Merged_symbol_value<64" identifier < number_literal) > (ERROR "::" : :) (call_expression "value_from_output_section\n                          (this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset)" identifier (argument_list "(this_00,object,*(uint *)(lVar1 + 8) & 0x7ffffff,(Elf_Addr)input_offset)" ( identifier , identifier , (binary_expression "*(uint *)(lVar1 + 8) & 0x7ffffff" (pointer_expression "*(uint *)(lVar1 + 8)" * (cast_expression "(uint *)(lVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) & number_literal) , (cast_expression "(Elf_Addr)input_offset" ( (type_descriptor "Elf_Addr" type_identifier) ) identifier) ))))) ;)) (return_statement "return EVar9 + addend;" return (binary_expression "EVar9 + addend" identifier + identifier) ;) })) (expression_statement "pTVar4 = parameters->target_;" (assignment_expression "pTVar4 = parameters->target_" identifier = (field_expression "parameters->target_" identifier -> field_identifier)) ;) (if_statement "if (pTVar4 != (Target *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);\n        return CONCAT44(extraout_var_01,iVar8);\n      }" if (parenthesized_expression "(pTVar4 != (Target *)0x0)" ( (binary_expression "pTVar4 != (Target *)0x0" identifier != (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);\n        return CONCAT44(extraout_var_01,iVar8);\n      }" { comment comment (expression_statement "iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2);" (assignment_expression "iVar8 = (*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2)" identifier = (call_expression "(*pTVar4->_vptr_Target[0xe])(pTVar4,object,(ulong)uVar2)" (parenthesized_expression "(*pTVar4->_vptr_Target[0xe])" ( (pointer_expression "*pTVar4->_vptr_Target[0xe]" * (subscript_expression "pTVar4->_vptr_Target[0xe]" (field_expression "pTVar4->_vptr_Target" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pTVar4,object,(ulong)uVar2)" ( identifier , identifier , (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) )))) ;) (return_statement "return CONCAT44(extraout_var_01,iVar8);" return (call_expression "CONCAT44(extraout_var_01,iVar8)" identifier (argument_list "(extraout_var_01,iVar8)" ( identifier , identifier ))) ;) })) (goto_statement "goto LAB_00217996;" goto statement_identifier ;) })) })) comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x489,"symbol_value");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x489,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x489,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) (ERROR "}" }))
(translation_unit "long FUN_00217730(long *param_1,ulong param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    \n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}\n\n" (function_definition "long FUN_00217730(long *param_1,ulong param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    \n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00217730(long *param_1,ulong param_2)" identifier (parameter_list "(long *param_1,ulong param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    \n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (expression_statement "uVar2 = *(uint *)(param_1 + 3);" (assignment_expression "uVar2 = *(uint *)(param_1 + 3)" identifier = (pointer_expression "*(uint *)(param_1 + 3)" * (cast_expression "(uint *)(param_1 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }" { (if_statement "if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }" if (parenthesized_expression "((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1))" ( (binary_expression "(-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)" (parenthesized_expression "(-1 < *(char *)((long)param_1 + 0x1f))" ( (binary_expression "-1 < *(char *)((long)param_1 + 0x1f)" number_literal < (pointer_expression "*(char *)((long)param_1 + 0x1f)" * (cast_expression "(char *)((long)param_1 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) || (parenthesized_expression "(*(int *)(*param_1 + 0x24) == -1)" ( (binary_expression "*(int *)(*param_1 + 0x24) == -1" (pointer_expression "*(int *)(*param_1 + 0x24)" * (cast_expression "(int *)(*param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x24)" ( (binary_expression "*param_1 + 0x24" (pointer_expression "*param_1" * identifier) + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }" { (return_statement "return *(long *)(*param_1 + 0x40) + param_2;" return (binary_expression "*(long *)(*param_1 + 0x40) + param_2" (pointer_expression "*(long *)(*param_1 + 0x40)" * (cast_expression "(long *)(*param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x40)" ( (binary_expression "*param_1 + 0x40" (pointer_expression "*param_1" * identifier) + number_literal) )))) + identifier) ;) })) (if_statement "if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }" if (parenthesized_expression "(*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0)" ( (binary_expression "*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0" (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" ( (binary_expression "PTR_DAT_0045c708 + 0x18" identifier + number_literal) )))) != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }" { (expression_statement "lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();" (assignment_expression "lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))()" identifier = (call_expression "(**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))()" (parenthesized_expression "(**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))" ( (pointer_expression "**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" * (pointer_expression "*(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" * (cast_expression "(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" ( (binary_expression "**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68" (pointer_expression "**(long **)(PTR_DAT_0045c708 + 0x18)" * (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" ( (binary_expression "PTR_DAT_0045c708 + 0x18" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return lVar5;" return identifier ;) })) }) (else_clause "else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" else (compound_statement "{\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" { (if_statement "if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }" if (parenthesized_expression "(uVar2 == 0xfffffffe)" ( (binary_expression "uVar2 == 0xfffffffe" identifier == number_literal) )) (compound_statement "{\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }" { (if_statement "if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }" if (parenthesized_expression "(*(char *)((long)param_1 + 0x1f) < '\0')" ( (binary_expression "*(char *)((long)param_1 + 0x1f) < '\0'" (pointer_expression "*(char *)((long)param_1 + 0x1f)" * (cast_expression "(char *)((long)param_1 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }" { (expression_statement "FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x47f,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }" if (parenthesized_expression "((*(byte *)(*param_1 + 0x20) & 1) != 0)" ( (binary_expression "(*(byte *)(*param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(*param_1 + 0x20) & 1" (pointer_expression "*(byte *)(*param_1 + 0x20)" * (cast_expression "(byte *)(*param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x20)" ( (binary_expression "*param_1 + 0x20" (pointer_expression "*param_1" * identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        return param_2 + *(long *)(*param_1 + 8);\n      }" { (return_statement "return param_2 + *(long *)(*param_1 + 8);" return (binary_expression "param_2 + *(long *)(*param_1 + 8)" identifier + (pointer_expression "*(long *)(*param_1 + 8)" * (cast_expression "(long *)(*param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) })) (expression_statement "FUN_0018ff20("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0018ff20("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (if_statement "if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }" if (parenthesized_expression "(((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0))" ( (binary_expression "((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)" (parenthesized_expression "((uVar2 + 4 < 2) || (uVar2 == 0))" ( (binary_expression "(uVar2 + 4 < 2) || (uVar2 == 0)" (parenthesized_expression "(uVar2 + 4 < 2)" ( (binary_expression "uVar2 + 4 < 2" (binary_expression "uVar2 + 4" identifier + number_literal) < number_literal) )) || (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x1f) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x1f) & 0x40)" ( (binary_expression "*(byte *)((long)param_1 + 0x1f) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x1f)" * (cast_expression "(byte *)((long)param_1 + 0x1f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }" { (expression_statement "FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x485,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (if_statement "if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }" if (parenthesized_expression "((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0))" ( (binary_expression "(*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)" (parenthesized_expression "(*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0)" ( (binary_expression "*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0" (pointer_expression "*(code **)(*(long *)*param_1 + 0x1d8)" * (cast_expression "(code **)(*(long *)*param_1 + 0x1d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*param_1 + 0x1d8)" ( (binary_expression "*(long *)*param_1 + 0x1d8" (pointer_expression "*(long *)*param_1" * (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) + number_literal) )))) == identifier) )) || (parenthesized_expression "(lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)" ( (comma_expression "lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0" (assignment_expression "lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))()" identifier = (call_expression "(**(code **)(*(long *)*param_1 + 0x1d8))()" (parenthesized_expression "(**(code **)(*(long *)*param_1 + 0x1d8))" ( (pointer_expression "**(code **)(*(long *)*param_1 + 0x1d8)" * (pointer_expression "*(code **)(*(long *)*param_1 + 0x1d8)" * (cast_expression "(code **)(*(long *)*param_1 + 0x1d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)*param_1 + 0x1d8)" ( (binary_expression "*(long *)*param_1 + 0x1d8" (pointer_expression "*(long *)*param_1" * (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) + number_literal) ))))) )) (argument_list "()" ( )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }" { (expression_statement "FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value")" identifier (argument_list "("../../gold/output.cc",0x489,"symbol_value")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""symbol_value"" " string_content ") ))) ;) })) (if_statement "if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }" if (parenthesized_expression "(-1 < *(char *)((long)param_1 + 0x1f))" ( (binary_expression "-1 < *(char *)((long)param_1 + 0x1f)" number_literal < (pointer_expression "*(char *)((long)param_1 + 0x1f)" * (cast_expression "(char *)((long)param_1 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1f)" ( (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }" { (if_statement "if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }" if (parenthesized_expression "((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2)" ( (binary_expression "(ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2" (call_expression "(ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3)" ( (binary_expression "*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3" (binary_expression "*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160)" (pointer_expression "*(long *)(lVar5 + 0x168)" * (cast_expression "(long *)(lVar5 + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x168)" ( (binary_expression "lVar5 + 0x168" identifier + number_literal) )))) - (pointer_expression "*(long *)(lVar5 + 0x160)" * (cast_expression "(long *)(lVar5 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x160)" ( (binary_expression "lVar5 + 0x160" identifier + number_literal) ))))) >> number_literal) )) * number_literal) ))) <= (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }" { (expression_statement "FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");" (call_expression "FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol")" identifier (argument_list "("../../gold/object.h",0x8c1,"local_symbol")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""local_symbol"" " string_content ") ))) ;) })) (expression_statement "lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;" (assignment_expression "lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18" identifier = (binary_expression "*(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18" (pointer_expression "*(long *)(lVar5 + 0x160)" * (cast_expression "(long *)(lVar5 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x160)" ( (binary_expression "lVar5 + 0x160" identifier + number_literal) )))) + (binary_expression "(ulong)uVar2 * 0x18" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal))) ;) (if_statement "if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }" if (parenthesized_expression "((char)*(byte *)(lVar1 + 0xb) < '\0')" ( (binary_expression "(char)*(byte *)(lVar1 + 0xb) < '\0'" (cast_expression "(char)*(byte *)(lVar1 + 0xb)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(lVar1 + 0xb)" * (cast_expression "(byte *)(lVar1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xb)" ( (binary_expression "lVar1 + 0xb" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }" { (return_statement "return *(long *)(lVar1 + 0x10) + param_2;" return (binary_expression "*(long *)(lVar1 + 0x10) + param_2" (pointer_expression "*(long *)(lVar1 + 0x10)" * (cast_expression "(long *)(lVar1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) )))) + identifier) ;) })) (if_statement "if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }" if (parenthesized_expression "((*(byte *)(lVar1 + 0xb) & 8) == 0)" ( (binary_expression "(*(byte *)(lVar1 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(lVar1 + 0xb) & 8)" ( (binary_expression "*(byte *)(lVar1 + 0xb) & 8" (pointer_expression "*(byte *)(lVar1 + 0xb)" * (cast_expression "(byte *)(lVar1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xb)" ( (binary_expression "lVar1 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }" { (expression_statement "FUN_0018ff20("../../gold/object.h",0x6ab,"value");" (call_expression "FUN_0018ff20("../../gold/object.h",0x6ab,"value")" identifier (argument_list "("../../gold/object.h",0x6ab,"value")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""value"" " string_content ") ))) ;) })) (expression_statement "puVar3 = *(ulong **)(lVar1 + 0x10);" (assignment_expression "puVar3 = *(ulong **)(lVar1 + 0x10)" identifier = (pointer_expression "*(ulong **)(lVar1 + 0x10)" * (cast_expression "(ulong **)(lVar1 + 0x10)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x10)" ( (binary_expression "lVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *puVar3;" (assignment_expression "uVar6 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (if_statement "if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }" if (parenthesized_expression "(param_2 < 0xffffff00)" ( (binary_expression "param_2 < 0xffffff00" identifier < number_literal) )) (compound_statement "{\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }" { (expression_statement "uVar6 = uVar6 + param_2;" (assignment_expression "uVar6 = uVar6 + param_2" identifier = (binary_expression "uVar6 + param_2" identifier + identifier)) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) })) (expression_statement "uVar7 = uVar6 % puVar3[3];" (assignment_expression "uVar7 = uVar6 % puVar3[3]" identifier = (binary_expression "uVar6 % puVar3[3]" identifier % (subscript_expression "puVar3[3]" identifier [ number_literal ]))) ;) (expression_statement "plVar10 = *(long **)(puVar3[2] + uVar7 * 8);" (assignment_expression "plVar10 = *(long **)(puVar3[2] + uVar7 * 8)" identifier = (pointer_expression "*(long **)(puVar3[2] + uVar7 * 8)" * (cast_expression "(long **)(puVar3[2] + uVar7 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3[2] + uVar7 * 8)" ( (binary_expression "puVar3[2] + uVar7 * 8" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + (binary_expression "uVar7 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }" { (expression_statement "uVar8 = ((long *)*plVar10)[1];" (assignment_expression "uVar8 = ((long *)*plVar10)[1]" identifier = (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" ( (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" identifier = (cast_expression "(long *)*plVar10" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar10" * identifier))) ;) (while_statement "while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }" while (parenthesized_expression "(plVar9 = plVar4, uVar8 != uVar6)" ( (comma_expression "plVar9 = plVar4, uVar8 != uVar6" (assignment_expression "plVar9 = plVar4" identifier = identifier) , (binary_expression "uVar8 != uVar6" identifier != identifier)) )) (compound_statement "{\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }" { (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (if_statement "if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;" if (parenthesized_expression "((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7))" ( (binary_expression "(plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)" (parenthesized_expression "(plVar4 == (long *)0x0)" ( (binary_expression "plVar4 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)" ( (comma_expression "uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7" (assignment_expression "uVar8 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) , (comma_expression "plVar10 = plVar9, uVar8 % puVar3[3] != uVar7" (assignment_expression "plVar10 = plVar9" identifier = identifier) , (binary_expression "uVar8 % puVar3[3] != uVar7" (binary_expression "uVar8 % puVar3[3]" identifier % (subscript_expression "puVar3[3]" identifier [ number_literal ])) != identifier))) ))) )) (goto_statement "goto LAB_00217920;" goto statement_identifier ;)) })) (if_statement "if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }" if (parenthesized_expression "(*plVar10 != 0)" ( (binary_expression "*plVar10 != 0" (pointer_expression "*plVar10" * identifier) != number_literal) )) (compound_statement "{\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }" { (return_statement "return param_2 + *(long *)(*plVar10 + 0x10);" return (binary_expression "param_2 + *(long *)(*plVar10 + 0x10)" identifier + (pointer_expression "*(long *)(*plVar10 + 0x10)" * (cast_expression "(long *)(*plVar10 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar10 + 0x10)" ( (binary_expression "*plVar10 + 0x10" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) ;) })) })) (labeled_statement "LAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);" statement_identifier : (expression_statement "lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);" (assignment_expression "lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" identifier = (call_expression "FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" identifier (argument_list "(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" ( identifier , identifier , (binary_expression "*(uint *)(lVar1 + 8) & 0x7ffffff" (pointer_expression "*(uint *)(lVar1 + 8)" * (cast_expression "(uint *)(lVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) & number_literal) )))) ;)) (return_statement "return lVar5 + param_2;" return (binary_expression "lVar5 + param_2" identifier + identifier) ;) })) (expression_statement "plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);" (assignment_expression "plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18)" identifier = (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" * (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" ( (binary_expression "PTR_DAT_0045c708 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }" if (parenthesized_expression "(plVar10 != (long *)0x0)" ( (binary_expression "plVar10 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }" { (expression_statement "lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);" (assignment_expression "lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2)" identifier = (call_expression "(**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2)" (parenthesized_expression "(**(code **)(*plVar10 + 0x70))" ( (pointer_expression "**(code **)(*plVar10 + 0x70)" * (pointer_expression "*(code **)(*plVar10 + 0x70)" * (cast_expression "(code **)(*plVar10 + 0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar10 + 0x70)" ( (binary_expression "*plVar10 + 0x70" (pointer_expression "*plVar10" * identifier) + number_literal) ))))) )) (argument_list "(plVar10,lVar5,uVar2)" ( identifier , identifier , identifier )))) ;) (return_statement "return lVar5;" return identifier ;) })) }))) (expression_statement "FUN_0018ff20("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0018ff20("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == LIT) ))) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) )))) == IDENT) )) || (parenthesized_expression ( (comma_expression (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 * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) )) (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) )) * LIT) ))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT % (subscript_expression IDENT [ LIT ])) != IDENT))) ))) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )))) ;)) (return_statement return (binary_expression IDENT + IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (return_statement return IDENT ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "long FUN_00217730(long *param_1,ulong param_2)\n\n{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    \n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_00217730(long *param_1,ulong param_2)" (identifier "FUN_00217730") (parameter_list "(long *param_1,ulong param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  uint uVar2;\n  ulong *puVar3;\n  long *plVar4;\n  long lVar5;\n  ulong uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long *plVar9;\n  long *plVar10;\n  \n  uVar2 = *(uint *)(param_1 + 3);\n  if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }\n                    \n  FUN_0018ff20("../../gold/parameters.h",0x69,"target");\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "ulong *puVar3;" (type_identifier "ulong") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "long *plVar9;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar9" (* "*") (identifier "plVar9")) (; ";")) (declaration "long *plVar10;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar10" (* "*") (identifier "plVar10")) (; ";")) (expression_statement "uVar2 = *(uint *)(param_1 + 3);" (assignment_expression "uVar2 = *(uint *)(param_1 + 3)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_1 + 3)" (* "*") (cast_expression "(uint *)(param_1 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (uVar2 == 0xffffffff) {\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }\n  else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" (if "if") (parenthesized_expression "(uVar2 == 0xffffffff)" (( "(") (binary_expression "uVar2 == 0xffffffff" (identifier "uVar2") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }\n    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }\n  }" ({ "{") (if_statement "if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }" (if "if") (parenthesized_expression "((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1))" (( "(") (binary_expression "(-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)" (parenthesized_expression "(-1 < *(char *)((long)param_1 + 0x1f))" (( "(") (binary_expression "-1 < *(char *)((long)param_1 + 0x1f)" (number_literal "-1") (< "<") (pointer_expression "*(char *)((long)param_1 + 0x1f)" (* "*") (cast_expression "(char *)((long)param_1 + 0x1f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1f)" (( "(") (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1f")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(*param_1 + 0x24) == -1)" (( "(") (binary_expression "*(int *)(*param_1 + 0x24) == -1" (pointer_expression "*(int *)(*param_1 + 0x24)" (* "*") (cast_expression "(int *)(*param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x24)" (( "(") (binary_expression "*param_1 + 0x24" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x24")) () ")")))) (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n      return *(long *)(*param_1 + 0x40) + param_2;\n    }" ({ "{") (return_statement "return *(long *)(*param_1 + 0x40) + param_2;" (return "return") (binary_expression "*(long *)(*param_1 + 0x40) + param_2" (pointer_expression "*(long *)(*param_1 + 0x40)" (* "*") (cast_expression "(long *)(*param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x40)" (( "(") (binary_expression "*param_1 + 0x40" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (identifier "param_2")) (; ";")) (} "}"))) (if_statement "if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }" (if "if") (parenthesized_expression "(*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0)" (( "(") (binary_expression "*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0" (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" (( "(") (binary_expression "PTR_DAT_0045c708 + 0x18" (identifier "PTR_DAT_0045c708") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n                    \n      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();\n      return lVar5;\n    }" ({ "{") (expression_statement "lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();" (assignment_expression "lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))()" (identifier "lVar5") (= "=") (call_expression "(**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))()" (parenthesized_expression "(**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))" (( "(") (pointer_expression "**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" (* "*") (pointer_expression "*(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" (* "*") (cast_expression "(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68)" (( "(") (binary_expression "**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68" (pointer_expression "**(long **)(PTR_DAT_0045c708 + 0x18)" (* "*") (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" (( "(") (binary_expression "PTR_DAT_0045c708 + 0x18" (identifier "PTR_DAT_0045c708") (+ "+") (number_literal "0x18")) () ")"))))) (+ "+") (number_literal "0x68")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return lVar5;" (return "return") (identifier "lVar5") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" (else "else") (compound_statement "{\n    if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }\n    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }\n    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }\n    if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }\n    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);\n    if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }\n  }" ({ "{") (if_statement "if (uVar2 == 0xfffffffe) {\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }" (if "if") (parenthesized_expression "(uVar2 == 0xfffffffe)" (( "(") (binary_expression "uVar2 == 0xfffffffe" (identifier "uVar2") (== "==") (number_literal "0xfffffffe")) () ")")) (compound_statement "{\n      if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }\n      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }\n                    \n      FUN_0018ff20("../../gold/output.h",0xc5,"address");\n    }" ({ "{") (if_statement "if (*(char *)((long)param_1 + 0x1f) < '\0') {\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }" (if "if") (parenthesized_expression "(*(char *)((long)param_1 + 0x1f) < '\0')" (( "(") (binary_expression "*(char *)((long)param_1 + 0x1f) < '\0'" (pointer_expression "*(char *)((long)param_1 + 0x1f)" (* "*") (cast_expression "(char *)((long)param_1 + 0x1f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1f)" (( "(") (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1f")) () ")")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");\n      }" ({ "{") (expression_statement "FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value")" (identifier "FUN_0018ff20") (argument_list "("../../gold/output.cc",0x47f,"symbol_value")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x47f") (, ",") (string_literal ""symbol_value"" (" """) (string_content "symbol_value") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {\n        return param_2 + *(long *)(*param_1 + 8);\n      }" (if "if") (parenthesized_expression "((*(byte *)(*param_1 + 0x20) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(*param_1 + 0x20) & 1) != 0" (parenthesized_expression "(*(byte *)(*param_1 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(*param_1 + 0x20) & 1" (pointer_expression "*(byte *)(*param_1 + 0x20)" (* "*") (cast_expression "(byte *)(*param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x20)" (( "(") (binary_expression "*param_1 + 0x20" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return param_2 + *(long *)(*param_1 + 8);\n      }" ({ "{") (return_statement "return param_2 + *(long *)(*param_1 + 8);" (return "return") (binary_expression "param_2 + *(long *)(*param_1 + 8)" (identifier "param_2") (+ "+") (pointer_expression "*(long *)(*param_1 + 8)" (* "*") (cast_expression "(long *)(*param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (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 "FUN_0018ff20("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0018ff20("../../gold/output.h",0xc5,"address")" (identifier "FUN_0018ff20") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }" (if "if") (parenthesized_expression "(((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0))" (( "(") (binary_expression "((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)" (parenthesized_expression "((uVar2 + 4 < 2) || (uVar2 == 0))" (( "(") (binary_expression "(uVar2 + 4 < 2) || (uVar2 == 0)" (parenthesized_expression "(uVar2 + 4 < 2)" (( "(") (binary_expression "uVar2 + 4 < 2" (binary_expression "uVar2 + 4" (identifier "uVar2") (+ "+") (number_literal "4")) (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)((long)param_1 + 0x1f) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x1f) & 0x40)" (( "(") (binary_expression "*(byte *)((long)param_1 + 0x1f) & 0x40" (pointer_expression "*(byte *)((long)param_1 + 0x1f)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x1f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1f)" (( "(") (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1f")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");\n    }" ({ "{") (expression_statement "FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value")" (identifier "FUN_0018ff20") (argument_list "("../../gold/output.cc",0x485,"symbol_value")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x485") (, ",") (string_literal ""symbol_value"" (" """) (string_content "symbol_value") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }" (if "if") (parenthesized_expression "((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0))" (( "(") (binary_expression "(*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||\n       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)" (parenthesized_expression "(*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0)" (( "(") (binary_expression "*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0" (pointer_expression "*(code **)(*(long *)*param_1 + 0x1d8)" (* "*") (cast_expression "(code **)(*(long *)*param_1 + 0x1d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)*param_1 + 0x1d8)" (( "(") (binary_expression "*(long *)*param_1 + 0x1d8" (pointer_expression "*(long *)*param_1" (* "*") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (+ "+") (number_literal "0x1d8")) () ")")))) (== "==") (identifier "FUN_001990e0")) () ")")) (|| "||") (parenthesized_expression "(lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)" (( "(") (comma_expression "lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0" (assignment_expression "lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))()" (identifier "lVar5") (= "=") (call_expression "(**(code **)(*(long *)*param_1 + 0x1d8))()" (parenthesized_expression "(**(code **)(*(long *)*param_1 + 0x1d8))" (( "(") (pointer_expression "**(code **)(*(long *)*param_1 + 0x1d8)" (* "*") (pointer_expression "*(code **)(*(long *)*param_1 + 0x1d8)" (* "*") (cast_expression "(code **)(*(long *)*param_1 + 0x1d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)*param_1 + 0x1d8)" (( "(") (binary_expression "*(long *)*param_1 + 0x1d8" (pointer_expression "*(long *)*param_1" (* "*") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (+ "+") (number_literal "0x1d8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                    \n      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");\n    }" ({ "{") (expression_statement "FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");" (call_expression "FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value")" (identifier "FUN_0018ff20") (argument_list "("../../gold/output.cc",0x489,"symbol_value")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x489") (, ",") (string_literal ""symbol_value"" (" """) (string_content "symbol_value") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (-1 < *(char *)((long)param_1 + 0x1f)) {\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }" (if "if") (parenthesized_expression "(-1 < *(char *)((long)param_1 + 0x1f))" (( "(") (binary_expression "-1 < *(char *)((long)param_1 + 0x1f)" (number_literal "-1") (< "<") (pointer_expression "*(char *)((long)param_1 + 0x1f)" (* "*") (cast_expression "(char *)((long)param_1 + 0x1f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1f)" (( "(") (binary_expression "(long)param_1 + 0x1f" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1f")) () ")"))))) () ")")) (compound_statement "{\n      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }\n      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;\n      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }\n      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }\n      puVar3 = *(ulong **)(lVar1 + 0x10);\n      uVar6 = *puVar3;\n      if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }\n      uVar7 = uVar6 % puVar3[3];\n      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);\n      if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }\nLAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);\n      return lVar5 + param_2;\n    }" ({ "{") (if_statement "if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }" (if "if") (parenthesized_expression "((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2)" (( "(") (binary_expression "(ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)\n          <= (ulong)uVar2" (call_expression "(ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)" (( "(") (binary_expression "(*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3)" (( "(") (binary_expression "*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3" (binary_expression "*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160)" (pointer_expression "*(long *)(lVar5 + 0x168)" (* "*") (cast_expression "(long *)(lVar5 + 0x168)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x168)" (( "(") (binary_expression "lVar5 + 0x168" (identifier "lVar5") (+ "+") (number_literal "0x168")) () ")")))) (- "-") (pointer_expression "*(long *)(lVar5 + 0x160)" (* "*") (cast_expression "(long *)(lVar5 + 0x160)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x160)" (( "(") (binary_expression "lVar5 + 0x160" (identifier "lVar5") (+ "+") (number_literal "0x160")) () ")"))))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555")) () ")"))) (<= "<=") (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2"))) () ")")) (compound_statement "{\n                    \n        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");\n      }" ({ "{") (expression_statement "FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");" (call_expression "FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol")" (identifier "FUN_0018ff20") (argument_list "("../../gold/object.h",0x8c1,"local_symbol")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x8c1") (, ",") (string_literal ""local_symbol"" (" """) (string_content "local_symbol") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;" (assignment_expression "lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18" (identifier "lVar1") (= "=") (binary_expression "*(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18" (pointer_expression "*(long *)(lVar5 + 0x160)" (* "*") (cast_expression "(long *)(lVar5 + 0x160)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x160)" (( "(") (binary_expression "lVar5 + 0x160" (identifier "lVar5") (+ "+") (number_literal "0x160")) () ")")))) (+ "+") (binary_expression "(ulong)uVar2 * 0x18" (cast_expression "(ulong)uVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar2")) (* "*") (number_literal "0x18")))) (; ";")) (if_statement "if ((char)*(byte *)(lVar1 + 0xb) < '\0') {\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }" (if "if") (parenthesized_expression "((char)*(byte *)(lVar1 + 0xb) < '\0')" (( "(") (binary_expression "(char)*(byte *)(lVar1 + 0xb) < '\0'" (cast_expression "(char)*(byte *)(lVar1 + 0xb)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(byte *)(lVar1 + 0xb)" (* "*") (cast_expression "(byte *)(lVar1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0xb)" (( "(") (binary_expression "lVar1 + 0xb" (identifier "lVar1") (+ "+") (number_literal "0xb")) () ")"))))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return *(long *)(lVar1 + 0x10) + param_2;\n      }" ({ "{") (return_statement "return *(long *)(lVar1 + 0x10) + param_2;" (return "return") (binary_expression "*(long *)(lVar1 + 0x10) + param_2" (pointer_expression "*(long *)(lVar1 + 0x10)" (* "*") (cast_expression "(long *)(lVar1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x10)" (( "(") (binary_expression "lVar1 + 0x10" (identifier "lVar1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "param_2")) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }" (if "if") (parenthesized_expression "((*(byte *)(lVar1 + 0xb) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(lVar1 + 0xb) & 8) == 0" (parenthesized_expression "(*(byte *)(lVar1 + 0xb) & 8)" (( "(") (binary_expression "*(byte *)(lVar1 + 0xb) & 8" (pointer_expression "*(byte *)(lVar1 + 0xb)" (* "*") (cast_expression "(byte *)(lVar1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0xb)" (( "(") (binary_expression "lVar1 + 0xb" (identifier "lVar1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_0018ff20("../../gold/object.h",0x6ab,"value");\n      }" ({ "{") (expression_statement "FUN_0018ff20("../../gold/object.h",0x6ab,"value");" (call_expression "FUN_0018ff20("../../gold/object.h",0x6ab,"value")" (identifier "FUN_0018ff20") (argument_list "("../../gold/object.h",0x6ab,"value")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x6ab") (, ",") (string_literal ""value"" (" """) (string_content "value") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar3 = *(ulong **)(lVar1 + 0x10);" (assignment_expression "puVar3 = *(ulong **)(lVar1 + 0x10)" (identifier "puVar3") (= "=") (pointer_expression "*(ulong **)(lVar1 + 0x10)" (* "*") (cast_expression "(ulong **)(lVar1 + 0x10)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x10)" (( "(") (binary_expression "lVar1 + 0x10" (identifier "lVar1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar6 = *puVar3;" (assignment_expression "uVar6 = *puVar3" (identifier "uVar6") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (if_statement "if (param_2 < 0xffffff00) {\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }" (if "if") (parenthesized_expression "(param_2 < 0xffffff00)" (( "(") (binary_expression "param_2 < 0xffffff00" (identifier "param_2") (< "<") (number_literal "0xffffff00")) () ")")) (compound_statement "{\n        uVar6 = uVar6 + param_2;\n        param_2 = 0;\n      }" ({ "{") (expression_statement "uVar6 = uVar6 + param_2;" (assignment_expression "uVar6 = uVar6 + param_2" (identifier "uVar6") (= "=") (binary_expression "uVar6 + param_2" (identifier "uVar6") (+ "+") (identifier "param_2"))) (; ";")) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" (identifier "param_2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar6 % puVar3[3];" (assignment_expression "uVar7 = uVar6 % puVar3[3]" (identifier "uVar7") (= "=") (binary_expression "uVar6 % puVar3[3]" (identifier "uVar6") (% "%") (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "plVar10 = *(long **)(puVar3[2] + uVar7 * 8);" (assignment_expression "plVar10 = *(long **)(puVar3[2] + uVar7 * 8)" (identifier "plVar10") (= "=") (pointer_expression "*(long **)(puVar3[2] + uVar7 * 8)" (* "*") (cast_expression "(long **)(puVar3[2] + uVar7 * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3[2] + uVar7 * 8)" (( "(") (binary_expression "puVar3[2] + uVar7 * 8" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "uVar7 * 8" (identifier "uVar7") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (plVar10 != (long *)0x0) {\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }" (if "if") (parenthesized_expression "(plVar10 != (long *)0x0)" (( "(") (binary_expression "plVar10 != (long *)0x0" (identifier "plVar10") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar8 = ((long *)*plVar10)[1];\n        plVar4 = (long *)*plVar10;\n        while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }\n        if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }\n      }" ({ "{") (expression_statement "uVar8 = ((long *)*plVar10)[1];" (assignment_expression "uVar8 = ((long *)*plVar10)[1]" (identifier "uVar8") (= "=") (subscript_expression "((long *)*plVar10)[1]" (parenthesized_expression "((long *)*plVar10)" (( "(") (cast_expression "(long *)*plVar10" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar10" (* "*") (identifier "plVar10"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar4 = (long *)*plVar10;" (assignment_expression "plVar4 = (long *)*plVar10" (identifier "plVar4") (= "=") (cast_expression "(long *)*plVar10" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar10" (* "*") (identifier "plVar10")))) (; ";")) (while_statement "while (plVar9 = plVar4, uVar8 != uVar6) {\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }" (while "while") (parenthesized_expression "(plVar9 = plVar4, uVar8 != uVar6)" (( "(") (comma_expression "plVar9 = plVar4, uVar8 != uVar6" (assignment_expression "plVar9 = plVar4" (identifier "plVar9") (= "=") (identifier "plVar4")) (, ",") (binary_expression "uVar8 != uVar6" (identifier "uVar8") (!= "!=") (identifier "uVar6"))) () ")")) (compound_statement "{\n          plVar4 = (long *)*plVar9;\n          if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;\n        }" ({ "{") (expression_statement "plVar4 = (long *)*plVar9;" (assignment_expression "plVar4 = (long *)*plVar9" (identifier "plVar4") (= "=") (cast_expression "(long *)*plVar9" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")))) (; ";")) (if_statement "if ((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;" (if "if") (parenthesized_expression "((plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7))" (( "(") (binary_expression "(plVar4 == (long *)0x0) ||\n             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)" (parenthesized_expression "(plVar4 == (long *)0x0)" (( "(") (binary_expression "plVar4 == (long *)0x0" (identifier "plVar4") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)" (( "(") (comma_expression "uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7" (assignment_expression "uVar8 = plVar4[1]" (identifier "uVar8") (= "=") (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "plVar10 = plVar9, uVar8 % puVar3[3] != uVar7" (assignment_expression "plVar10 = plVar9" (identifier "plVar10") (= "=") (identifier "plVar9")) (, ",") (binary_expression "uVar8 % puVar3[3] != uVar7" (binary_expression "uVar8 % puVar3[3]" (identifier "uVar8") (% "%") (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (identifier "uVar7")))) () ")"))) () ")")) (goto_statement "goto LAB_00217920;" (goto "goto") (statement_identifier "LAB_00217920") (; ";"))) (} "}"))) (if_statement "if (*plVar10 != 0) {\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }" (if "if") (parenthesized_expression "(*plVar10 != 0)" (( "(") (binary_expression "*plVar10 != 0" (pointer_expression "*plVar10" (* "*") (identifier "plVar10")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return param_2 + *(long *)(*plVar10 + 0x10);\n        }" ({ "{") (return_statement "return param_2 + *(long *)(*plVar10 + 0x10);" (return "return") (binary_expression "param_2 + *(long *)(*plVar10 + 0x10)" (identifier "param_2") (+ "+") (pointer_expression "*(long *)(*plVar10 + 0x10)" (* "*") (cast_expression "(long *)(*plVar10 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar10 + 0x10)" (( "(") (binary_expression "*plVar10 + 0x10" (pointer_expression "*plVar10" (* "*") (identifier "plVar10")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00217920:\n      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);" (statement_identifier "LAB_00217920") (: ":") (expression_statement "lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);" (assignment_expression "lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" (identifier "FUN_00258400") (argument_list "(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff)" (( "(") (identifier "puVar3") (, ",") (identifier "lVar5") (, ",") (binary_expression "*(uint *)(lVar1 + 8) & 0x7ffffff" (pointer_expression "*(uint *)(lVar1 + 8)" (* "*") (cast_expression "(uint *)(lVar1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0x7ffffff")) () ")")))) (; ";"))) (return_statement "return lVar5 + param_2;" (return "return") (binary_expression "lVar5 + param_2" (identifier "lVar5") (+ "+") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);" (assignment_expression "plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18)" (identifier "plVar10") (= "=") (pointer_expression "*(long **)(PTR_DAT_0045c708 + 0x18)" (* "*") (cast_expression "(long **)(PTR_DAT_0045c708 + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_0045c708 + 0x18)" (( "(") (binary_expression "PTR_DAT_0045c708 + 0x18" (identifier "PTR_DAT_0045c708") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (plVar10 != (long *)0x0) {\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }" (if "if") (parenthesized_expression "(plVar10 != (long *)0x0)" (( "(") (binary_expression "plVar10 != (long *)0x0" (identifier "plVar10") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n                    \n      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);\n      return lVar5;\n    }" ({ "{") (expression_statement "lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);" (assignment_expression "lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2)" (identifier "lVar5") (= "=") (call_expression "(**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2)" (parenthesized_expression "(**(code **)(*plVar10 + 0x70))" (( "(") (pointer_expression "**(code **)(*plVar10 + 0x70)" (* "*") (pointer_expression "*(code **)(*plVar10 + 0x70)" (* "*") (cast_expression "(code **)(*plVar10 + 0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar10 + 0x70)" (( "(") (binary_expression "*plVar10 + 0x70" (pointer_expression "*plVar10" (* "*") (identifier "plVar10")) (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (argument_list "(plVar10,lVar5,uVar2)" (( "(") (identifier "plVar10") (, ",") (identifier "lVar5") (, ",") (identifier "uVar2") () ")")))) (; ";")) (return_statement "return lVar5;" (return "return") (identifier "lVar5") (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_0018ff20("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0018ff20("../../gold/parameters.h",0x69,"target")" (identifier "FUN_0018ff20") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: Elf_Addr symbol_value(Output_reloc<9,_false,_64,_false> * this, Addend
   addend) */

type_1 __thiscall
gold::Output_reloc<9,var_8,_64,var_8>::symbol_value
          (Output_reloc<9,var_8,_64,var_8> *this,Addend var_3)

{
  long var_12;
  type_2 var_2;
  type_3 *var_6;
  type_4 *var_21;
  type_5 var_11;
  var_1<64> *this_00;
  type_6 var_13;
  type_7 *var_17;
  int iVar8;
  type_8 extraout_var;
  type_8 extraout_var_00;
  type_8 extraout_var_01;
  type_1 var_20;
  type_7 *var_16;
  type_6 var_18;
  type_7 *var_15;
  type_9 p_Var12;
  type_9 var_14;
  type_10 *var_10;
  
  var_2 = this->local_sym_index_;
  if (var_2 == 0xffffffff) {
    if ((-1 < (char)this->field_0x1f) ||
       (*(int *)((long)&(((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2 + 0xc) == -1
       )) {
      return (long)&((((this->u1_).relobj)->super_Relobj).super_Object.xindex_)->large_shndx_offset_
             + var_3;
    }
    if (parameters->target_ != (type_4 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      iVar8 = (*parameters->target_->_vptr_Target[0xd])();
      return var_4(extraout_var,iVar8);
    }
LAB_00217996:
                    /* WARNING: Subroutine does not return */
    var_5("../../gold/parameters.h",0x69,"target");
  }
  if (var_2 == 0xfffffffe) {
    if ((char)this->field_0x1f < '\0') {
                    /* WARNING: Subroutine does not return */
      var_5("../../gold/output.cc",0x47f,"symbol_value");
    }
    if (((((this->u1_).relobj)->super_Relobj).super_Object.name_.field_2._M_local_buf[8] & 1U) != 0)
    {
      return (type_1)
             ((((this->u1_).relobj)->super_Relobj).super_Object.name_._M_dataplus._M_p + var_3);
    }
                    /* WARNING: Subroutine does not return */
    var_5("../../gold/output.h",0xc5,"address");
  }
  if (((var_2 + 4 < 2) || (var_2 == 0)) || ((this->field_0x1f & 0x40) != 0)) {
                    /* WARNING: Subroutine does not return */
    var_5("../../gold/output.cc",0x485,"symbol_value");
  }
  var_6 = (((this->u1_).relobj)->super_Relobj).super_Object._vptr_Object[0x3b];
  if (var_6 != var_7<64,var_8>::var_9) {
    iVar8 = (*var_6)();
    var_10 = (type_10 *)var_4(extraout_var_00,iVar8);
    if (var_10 != (type_10 *)0x0) {
      if (-1 < (char)this->field_0x1f) {
        var_11 = var_10[2].super_Object.name_._M_string_length;
        if ((type_6)(((long)(var_10[2].super_Object.name_.field_2._M_allocated_capacity - var_11) >> 3
                    ) * -0x5555555555555555) <= (type_6)var_2) {
                    /* WARNING: Subroutine does not return */
          var_5("../../gold/object.h",0x8c1,"local_symbol");
        }
        var_12 = var_11 + (type_6)var_2 * 0x18;
        if ((char)*(type_11 *)(var_12 + 0xb) < '\0') {
          return *(long *)(var_12 + 0x10) + var_3;
        }
        if ((*(type_11 *)(var_12 + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
          var_5("../../gold/object.h",0x6ab,"value");
        }
        this_00 = *(var_1<64> **)(var_12 + 0x10);
        var_16 = (type_7 *)this_00->input_value_;
        if (var_3 < 0xffffff00) {
          var_16 = (type_7 *)((long)&var_16->_M_nxt + var_3);
          var_3 = 0;
        }
        var_13 = (this_00->output_addresses_)._M_h._M_bucket_count;
        var_18 = (type_6)var_16 % var_13;
        var_14 = (this_00->output_addresses_)._M_h._M_buckets[var_18];
        if (var_14 != (type_9)0x0) {
          var_15 = var_14->_M_nxt[1]._M_nxt;
          var_17 = var_14->_M_nxt;
          while (p_Var12 = var_17, var_15 != var_16) {
            var_17 = p_Var12->_M_nxt;
            if ((var_17 == (type_7 *)0x0) ||
               (var_15 = var_17[1]._M_nxt, var_14 = p_Var12, (type_6)var_15 % var_13 != var_18))
            goto LAB_00217920;
          }
          if (var_14->_M_nxt != (type_7 *)0x0) {
            return (long)&(var_14->_M_nxt[2]._M_nxt)->_M_nxt + var_3;
          }
        }
LAB_00217920:
        var_20 = var_1<64>::var_19
                          (this_00,var_10,*(type_2 *)(var_12 + 8) & 0x7ffffff,(type_1)var_16);
        return var_20 + var_3;
      }
      var_21 = parameters->target_;
      if (var_21 != (type_4 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        iVar8 = (*var_21->_vptr_Target[0xe])(var_21,var_10,(type_6)var_2);
        return var_4(extraout_var_01,iVar8);
      }
      goto LAB_00217996;
    }
  }
                    /* WARNING: Subroutine does not return */
  var_5("../../gold/output.cc",0x489,"symbol_value");
}


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

long MASKED(long *param_1,ulong param_2)

{
  long lVar1;
  uint uVar2;
  ulong *puVar3;
  long *plVar4;
  long lVar5;
  ulong uVar6;
  ulong uVar7;
  ulong uVar8;
  long *plVar9;
  long *plVar10;
  
  uVar2 = *(uint *)(param_1 + 3);
  if (uVar2 == 0xffffffff) {
    if ((-1 < *(char *)((long)param_1 + 0x1f)) || (*(int *)(*param_1 + 0x24) == -1)) {
      return *(long *)(*param_1 + 0x40) + param_2;
    }
    if (*(long **)(PTR_DAT_0045c708 + 0x18) != (long *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x002177f6. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      lVar5 = (**(code **)(**(long **)(PTR_DAT_0045c708 + 0x18) + 0x68))();
      return lVar5;
    }
  }
  else {
    if (uVar2 == 0xfffffffe) {
      if (*(char *)((long)param_1 + 0x1f) < '\0') {
                    /* WARNING: Subroutine does not return */
        FUN_0018ff20("../../gold/output.cc",0x47f,"symbol_value");
      }
      if ((*(byte *)(*param_1 + 0x20) & 1) != 0) {
        return param_2 + *(long *)(*param_1 + 8);
      }
                    /* WARNING: Subroutine does not return */
      FUN_0018ff20("../../gold/output.h",0xc5,"address");
    }
    if (((uVar2 + 4 < 2) || (uVar2 == 0)) || ((*(byte *)((long)param_1 + 0x1f) & 0x40) != 0)) {
                    /* WARNING: Subroutine does not return */
      FUN_0018ff20("../../gold/output.cc",0x485,"symbol_value");
    }
    if ((*(code **)(*(long *)*param_1 + 0x1d8) == FUN_001990e0) ||
       (lVar5 = (**(code **)(*(long *)*param_1 + 0x1d8))(), lVar5 == 0)) {
                    /* WARNING: Subroutine does not return */
      FUN_0018ff20("../../gold/output.cc",0x489,"symbol_value");
    }
    if (-1 < *(char *)((long)param_1 + 0x1f)) {
      if ((ulong)((*(long *)(lVar5 + 0x168) - *(long *)(lVar5 + 0x160) >> 3) * -0x5555555555555555)
          <= (ulong)uVar2) {
                    /* WARNING: Subroutine does not return */
        FUN_0018ff20("../../gold/object.h",0x8c1,"local_symbol");
      }
      lVar1 = *(long *)(lVar5 + 0x160) + (ulong)uVar2 * 0x18;
      if ((char)*(byte *)(lVar1 + 0xb) < '\0') {
        return *(long *)(lVar1 + 0x10) + param_2;
      }
      if ((*(byte *)(lVar1 + 0xb) & 8) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_0018ff20("../../gold/object.h",0x6ab,"value");
      }
      puVar3 = *(ulong **)(lVar1 + 0x10);
      uVar6 = *puVar3;
      if (param_2 < 0xffffff00) {
        uVar6 = uVar6 + param_2;
        param_2 = 0;
      }
      uVar7 = uVar6 % puVar3[3];
      plVar10 = *(long **)(puVar3[2] + uVar7 * 8);
      if (plVar10 != (long *)0x0) {
        uVar8 = ((long *)*plVar10)[1];
        plVar4 = (long *)*plVar10;
        while (plVar9 = plVar4, uVar8 != uVar6) {
          plVar4 = (long *)*plVar9;
          if ((plVar4 == (long *)0x0) ||
             (uVar8 = plVar4[1], plVar10 = plVar9, uVar8 % puVar3[3] != uVar7)) goto LAB_00217920;
        }
        if (*plVar10 != 0) {
          return param_2 + *(long *)(*plVar10 + 0x10);
        }
      }
LAB_00217920:
      lVar5 = FUN_00258400(puVar3,lVar5,*(uint *)(lVar1 + 8) & 0x7ffffff);
      return lVar5 + param_2;
    }
    plVar10 = *(long **)(PTR_DAT_0045c708 + 0x18);
    if (plVar10 != (long *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x00217845. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      lVar5 = (**(code **)(*plVar10 + 0x70))(plVar10,lVar5,uVar2);
      return lVar5;
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0018ff20("../../gold/parameters.h",0x69,"target");
}

