
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool make_toc_relative(Powerpc_relobj<64,_true> * this,
   Target_powerpc<64,_true> * target, Address * value) */

bool __thiscall
anon_unknown.dwarf_2cac9f::Powerpc_relobj<64,_true>::make_toc_relative
          (Powerpc_relobj<64,_true> *this,Target_powerpc<64,_true> *target,Address *value)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  pointer puVar4;
  _Bit_type *p_Var5;
  _Bit_type *p_Var6;
  Output_section *pOVar7;
  Elf_WXword EVar8;
  uchar *puVar9;
  long lVar10;
  ulong uVar11;
  section_size_type vlen;
  
  uVar2 = this->toc_;
  if (uVar2 == 0) {
    return false;
  }
  puVar4 = (this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.section_offsets_.
           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.
           _M_start;
  if ((ulong)((long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.
                    section_offsets_.
                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.
                    _M_impl._M_finish - (long)puVar4 >> 3) <= (ulong)uVar2) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");
  }
  uVar11 = (*value + 0x8000) - puVar4[uVar2];
  EVar8 = elfcpp::Elf_file<64,_true,_gold::Object>::section_size
                    (&(this->super_Sized_relobj_file<64,_true>).elf_file_,uVar2);
  if (uVar11 < EVar8) {
    uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.
            super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;
    uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.
            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;
    p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.
             super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;
    p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.
             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
    if (((uVar2 == uVar3) && (p_Var5 == p_Var6)) ||
       ((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&
        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)))) {
      puVar9 = gold::Sized_relobj_file<64,_true>::do_get_output_view
                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen);
      uVar11 = *(ulong *)(puVar9 + uVar11);
      if (target->got_ == (Output_data_got_powerpc<64,_true> *)0x0) {
                    /* WARNING: Subroutine does not return */
        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);
      }
      pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.
               super_Output_section_data_build.super_Output_section_data.output_section_;
      bVar1 = (pOVar7->super_Output_data).field_0x20;
      if ((bVar1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");
      }
      lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |
                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |
                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28
               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_;
      if (lVar10 + 0x80000000U < 0x100000000) {
        *value = lVar10 - 0x8000;
        return (bool)(bVar1 & 1);
      }
    }
  }
  return false;
}



ulong FUN_0019b810(long param_1,long param_2,long *param_3)

{
  ulong *puVar1;
  byte bVar2;
  ulong uVar3;
  long lVar4;
  ulong uVar5;
  uint uVar6;
  ulong uVar7;
  ulong uVar8;
  long lVar9;
  undefined4 uStack_54;
  undefined1 local_30 [16];
  
  uVar6 = *(uint *)(param_1 + 0x22c);
  if (uVar6 == 0) {
    return 0;
  }
  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");
  }
  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);
  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);
  if (uVar7 < uVar3) {
    lVar4 = *(long *)(param_1 + 0x238);
    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&
        (*(long *)(param_1 + 0x248) == lVar4)) ||
       ((uVar7 >> 3 <
         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -
         (ulong)*(uint *)(param_1 + 0x240) &&
        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {
      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);
      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);
      uVar3 = *(ulong *)(lVar4 + uVar7);
      if (*(long *)(param_2 + 0x20) == 0) {
        FUN_0016d960();
        uVar7 = (ulong)*(uint *)(param_1 + 0x250);
        uVar3 = (ulong)*(uint *)(param_1 + 0x240);
        lVar4 = *(long *)(param_1 + 0x248);
        lVar9 = *(long *)(param_1 + 0x238);
        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {
          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));
          lVar9 = *(long *)(param_1 + 0x238);
          uVar3 = (ulong)*(uint *)(param_1 + 0x240);
          uVar5 = uVar5 >> 3;
          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -
                  uVar3;
          if (uVar5 < uVar7) {
            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;
            uVar7 = (ulong)uVar6;
            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;
            *(long *)(param_1 + 0x248) = lVar4;
            *(uint *)(param_1 + 0x250) = uVar6;
          }
          else {
            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),
                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);
            lVar9 = *(long *)(param_1 + 0x238);
            uVar7 = (ulong)*(uint *)(param_1 + 0x250);
            lVar4 = *(long *)(param_1 + 0x248);
            uVar3 = (ulong)*(uint *)(param_1 + 0x240);
          }
        }
        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;
        if (uVar8 >> 3 < uVar3) {
          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);
          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);
          *puVar1 = *puVar1 | uVar3;
        }
        return uVar3;
      }
      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);
      bVar2 = *(byte *)(lVar4 + 0x20);
      if ((bVar2 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_001e9890("../../gold/output.h",0xc5,"address");
      }
      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18
               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |
               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -
              *(long *)(lVar4 + 8);
      if (lVar4 + 0x80000000U < 0x100000000) {
        *param_3 = lVar4 + -0x8000;
        return (ulong)(bVar2 & 1);
      }
    }
  }
  return 0;
}


MOV EAX,dword ptr [RDI + 0x22c]
TEST EAX,EAX
JNZ 0x0019b820
XOR EAX,EAX
RET
PUSH R13
MOV R13,RDX
PUSH R12
MOV R12,RSI
MOV ESI,EAX
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x18
MOV RCX,qword ptr [RDX]
MOV RDX,qword ptr [RDI + 0xe0]
LEA RBP,[RCX + 0x8000]
MOV RCX,qword ptr [RDI + 0xe8]
SUB RCX,RDX
SAR RCX,0x3
CMP RSI,RCX
JNC 0x0019b935
SUB RBP,qword ptr [RDX + RSI*0x8]
LEA RDI,[RDI + 0xf8]
MOV ESI,EAX
CALL 0x001c4aa0
CMP RBP,RAX
JNC 0x0019b928
MOV EDX,dword ptr [RBX + 0x250]
MOV EAX,dword ptr [RBX + 0x240]
MOV RSI,qword ptr [RBX + 0x248]
MOV RDI,qword ptr [RBX + 0x238]
CMP EDX,EAX
JNZ 0x0019b89b
CMP RSI,RDI
JZ 0x0019b8c6
SUB RSI,RDI
MOV RCX,RBP
LEA RDX,[RDX + RSI*0x8]
SHR RCX,0x3
SUB RDX,RAX
CMP RCX,RDX
JNC 0x0019b928
MOV RDX,RBP
MOV EAX,0x1
SHR RDX,0x9
SHL RAX,CL
TEST qword ptr [RDI + RDX*0x8],RAX
JNZ 0x0019b928
MOV ESI,dword ptr [RBX + 0x22c]
LEA RDX,[RSP + 0x8]
MOV RDI,RBX
CALL 0x002ad0d0
MOV RDX,qword ptr [RAX + RBP*0x1]
MOV RAX,qword ptr [R12 + 0x20]
BSWAP RDX
TEST RAX,RAX
JZ 0x0019b965
MOV RCX,qword ptr [RAX + 0x28]
MOVZX EAX,byte ptr [RCX + 0x20]
AND EAX,0x1
JZ 0x0019b94d
SUB RDX,qword ptr [RCX + 0x8]
MOV ESI,0xffffffff
LEA RCX,[RDX + -0x8000]
MOV EDX,0x80008000
ADD RDX,RCX
CMP RDX,RSI
JA 0x0019b928
MOV qword ptr [R13],RCX
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
RET
ADD RSP,0x18
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
RET
LEA RDX,[0x3dd4b0]
MOV ESI,0x7f7
LEA RDI,[0x3de3f5]
CALL 0x001e9890
LEA RDX,[0x3dd838]
MOV ESI,0xc5
LEA RDI,[0x3de409]
CALL 0x001e9890
CALL 0x0016d960
NOP word ptr [RAX + RAX*0x1]
(translation_unit "ulong FUN_0019b810(long param_1,long param_2,long *param_3)\n\n{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "ulong FUN_0019b810(long param_1,long param_2,long *param_3)\n\n{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0019b810(long param_1,long param_2,long *param_3)" identifier (parameter_list "(long param_1,long param_2,long *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}" { (declaration "ulong *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uStack_54;" type_identifier identifier ;) (declaration "undefined1 local_30 [16];" type_identifier (array_declarator "local_30 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x22c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x22c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x22c)" * (cast_expression "(uint *)(param_1 + 0x22c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22c)" ( (binary_expression "param_1 + 0x22c" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" if (parenthesized_expression "((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6)" ( (binary_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6" (call_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3)" ( (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3" (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0)" (pointer_expression "*(long *)(param_1 + 0xe8)" * (cast_expression "(long *)(param_1 + 0xe8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) ))))) >> number_literal) ))) <= (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" { comment (expression_statement "FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;) })) (expression_statement "uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);" (assignment_expression "uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" identifier = (binary_expression "(*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" (parenthesized_expression "(*param_3 + 0x8000)" ( (binary_expression "*param_3 + 0x8000" (pointer_expression "*param_3" * identifier) + number_literal) )) - (pointer_expression "*(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" ( (binary_expression "*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8" (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) + (binary_expression "(ulong)uVar6 * 8" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))))) ;) (expression_statement "uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);" (assignment_expression "uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6)" identifier = (call_expression "FUN_001c4aa0(param_1 + 0xf8,uVar6)" identifier (argument_list "(param_1 + 0xf8,uVar6)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) , identifier )))) ;) (if_statement "if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }" { (expression_statement "lVar4 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (if_statement "if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0))))" ( (binary_expression "((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))" (parenthesized_expression "((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4))" ( (binary_expression "(*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)" (parenthesized_expression "(*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240))" ( (binary_expression "*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)" (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) == (pointer_expression "*(uint *)(param_1 + 0x240)" * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) )) && (parenthesized_expression "(*(long *)(param_1 + 0x248) == lVar4)" ( (binary_expression "*(long *)(param_1 + 0x248) == lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) == identifier) ))) )) || (parenthesized_expression "((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))" ( (parenthesized_expression "(uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0))" ( (binary_expression "uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)" (binary_expression "uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240)" (binary_expression "uVar7 >> 3" identifier >> number_literal) < (binary_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8)" ( (binary_expression "(ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) + (binary_expression "(*(long *)(param_1 + 0x248) - lVar4) * 8" (parenthesized_expression "(*(long *)(param_1 + 0x248) - lVar4)" ( (binary_expression "*(long *)(param_1 + 0x248) - lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) - identifier) )) * number_literal)) )) - (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) )))))) && (parenthesized_expression "((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)" ( (binary_expression "(*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0" (parenthesized_expression "(*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f))" ( (binary_expression "*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)" (pointer_expression "*(ulong *)(lVar4 + (uVar7 >> 9) * 8)" * (cast_expression "(ulong *)(lVar4 + (uVar7 >> 9) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + (uVar7 >> 9) * 8)" ( (binary_expression "lVar4 + (uVar7 >> 9) * 8" identifier + (binary_expression "(uVar7 >> 9) * 8" (parenthesized_expression "(uVar7 >> 9)" ( (binary_expression "uVar7 >> 9" identifier >> number_literal) )) * number_literal)) )))) & (binary_expression "1L << ((byte)(uVar7 >> 3) & 0x3f)" number_literal << (parenthesized_expression "((byte)(uVar7 >> 3) & 0x3f)" ( (binary_expression "(byte)(uVar7 >> 3) & 0x3f" (call_expression "(byte)(uVar7 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar7 >> 3)" ( (binary_expression "uVar7 >> 3" identifier >> number_literal) ))) & number_literal) )))) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }" { (expression_statement "uVar8 = (ulong)*(uint *)(param_1 + 0x22c);" (assignment_expression "uVar8 = (ulong)*(uint *)(param_1 + 0x22c)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x22c)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x22c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22c)" ( (binary_expression "param_1 + 0x22c" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);" (assignment_expression "lVar4 = FUN_002ad0d0(param_1,uVar8,local_30)" identifier = (call_expression "FUN_002ad0d0(param_1,uVar8,local_30)" identifier (argument_list "(param_1,uVar8,local_30)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar3 = *(ulong *)(lVar4 + uVar7);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + uVar7)" identifier = (pointer_expression "*(ulong *)(lVar4 + uVar7)" * (cast_expression "(ulong *)(lVar4 + uVar7)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + uVar7)" ( (binary_expression "lVar4 + uVar7" identifier + identifier) ))))) ;) (if_statement "if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }" if (parenthesized_expression "(*(long *)(param_2 + 0x20) == 0)" ( (binary_expression "*(long *)(param_2 + 0x20) == 0" (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }" { (expression_statement "FUN_0016d960();" (call_expression "FUN_0016d960()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = (ulong)*(uint *)(param_1 + 0x250);" (assignment_expression "uVar7 = (ulong)*(uint *)(param_1 + 0x250)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x248);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x248)" identifier = (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (if_statement "if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }" if (parenthesized_expression "((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250)))" ( (binary_expression "(lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))" (parenthesized_expression "(lVar4 == lVar9)" ( (binary_expression "lVar4 == lVar9" identifier == identifier) )) && (parenthesized_expression "(*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))" ( (binary_expression "*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250)" (pointer_expression "*(uint *)(param_1 + 0x240)" * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) )))) == (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ))) )) (compound_statement "{\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }" { (expression_statement "uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));" (assignment_expression "uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" identifier = (call_expression "FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" identifier (argument_list "(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x22c)" * (cast_expression "(undefined4 *)(param_1 + 0x22c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22c)" ( (binary_expression "param_1 + 0x22c" identifier + number_literal) )))) )))) ;) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = uVar5 >> 3;" (assignment_expression "uVar5 = uVar5 >> 3" identifier = (binary_expression "uVar5 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;" (assignment_expression "uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3" identifier = (binary_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8)" ( (binary_expression "(ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) + (binary_expression "(*(long *)(param_1 + 0x248) - lVar9) * 8" (parenthesized_expression "(*(long *)(param_1 + 0x248) - lVar9)" ( (binary_expression "*(long *)(param_1 + 0x248) - lVar9" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) - identifier) )) * number_literal)) )) - identifier)) ;) (if_statement "if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" if (parenthesized_expression "(uVar5 < uVar7)" ( (binary_expression "uVar5 < uVar7" identifier < identifier) )) (compound_statement "{\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }" { (expression_statement "uVar6 = (uint)(uVar5 + uVar3) & 0x3f;" (assignment_expression "uVar6 = (uint)(uVar5 + uVar3) & 0x3f" identifier = (binary_expression "(uint)(uVar5 + uVar3) & 0x3f" (call_expression "(uint)(uVar5 + uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 + uVar3)" ( (binary_expression "uVar5 + uVar3" identifier + identifier) ))) & number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar6;" (assignment_expression "uVar7 = (ulong)uVar6" identifier = (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;" (assignment_expression "lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8" identifier = (binary_expression "lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8" identifier + (binary_expression "((long)(uVar5 + uVar3) >> 6) * 8" (parenthesized_expression "((long)(uVar5 + uVar3) >> 6)" ( (binary_expression "(long)(uVar5 + uVar3) >> 6" (cast_expression "(long)(uVar5 + uVar3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar5 + uVar3)" ( (binary_expression "uVar5 + uVar3" identifier + identifier) ))) >> number_literal) )) * number_literal))) ;) (expression_statement "*(long *)(param_1 + 0x248) = lVar4;" (assignment_expression "*(long *)(param_1 + 0x248) = lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x250) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x250) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" else (compound_statement "{\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" { (expression_statement "FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);" (call_expression "FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0)" identifier (argument_list "(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) , (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , (call_expression "CONCAT44(uStack_54,*(uint *)(param_1 + 0x250))" identifier (argument_list "(uStack_54,*(uint *)(param_1 + 0x250))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) ))) , (binary_expression "uVar5 - uVar7" identifier - identifier) , number_literal ))) ;) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = (ulong)*(uint *)(param_1 + 0x250);" (assignment_expression "uVar7 = (ulong)*(uint *)(param_1 + 0x250)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x248);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x248)" identifier = (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) }))) })) (expression_statement "uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;" (assignment_expression "uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3" identifier = (binary_expression "(uVar7 + (lVar4 - lVar9) * 8) - uVar3" (parenthesized_expression "(uVar7 + (lVar4 - lVar9) * 8)" ( (binary_expression "uVar7 + (lVar4 - lVar9) * 8" identifier + (binary_expression "(lVar4 - lVar9) * 8" (parenthesized_expression "(lVar4 - lVar9)" ( (binary_expression "lVar4 - lVar9" identifier - identifier) )) * number_literal)) )) - identifier)) ;) (if_statement "if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }" if (parenthesized_expression "(uVar8 >> 3 < uVar3)" ( (binary_expression "uVar8 >> 3 < uVar3" (binary_expression "uVar8 >> 3" identifier >> number_literal) < identifier) )) (compound_statement "{\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }" { (expression_statement "uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);" (assignment_expression "uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f)" identifier = (binary_expression "1L << ((byte)(uVar8 >> 3) & 0x3f)" number_literal << (parenthesized_expression "((byte)(uVar8 >> 3) & 0x3f)" ( (binary_expression "(byte)(uVar8 >> 3) & 0x3f" (call_expression "(byte)(uVar8 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 >> 3)" ( (binary_expression "uVar8 >> 3" identifier >> number_literal) ))) & number_literal) )))) ;) (expression_statement "puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);" (assignment_expression "puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8)" identifier = (cast_expression "(ulong *)(lVar9 + (uVar8 >> 9) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + (uVar8 >> 9) * 8)" ( (binary_expression "lVar9 + (uVar8 >> 9) * 8" identifier + (binary_expression "(uVar8 >> 9) * 8" (parenthesized_expression "(uVar8 >> 9)" ( (binary_expression "uVar8 >> 9" identifier >> number_literal) )) * number_literal)) )))) ;) (expression_statement "*puVar1 = *puVar1 | uVar3;" (assignment_expression "*puVar1 = *puVar1 | uVar3" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | uVar3" (pointer_expression "*puVar1" * identifier) | identifier)) ;) })) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);" (assignment_expression "lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 0x20) + 0x28)" * (cast_expression "(long *)(*(long *)(param_2 + 0x20) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x20) + 0x28)" ( (binary_expression "*(long *)(param_2 + 0x20) + 0x28" (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar4 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar4 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((bVar2 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }" if (parenthesized_expression "((bVar2 & 1) == 0)" ( (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }" { comment (expression_statement "FUN_001e9890("../../gold/output.h",0xc5,"address");" (call_expression "FUN_001e9890("../../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 ") ))) ;) })) (expression_statement "lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);" (assignment_expression "lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8)" identifier = (binary_expression "(uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8)" (parenthesized_expression "(uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38)" ( (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28" (binary_expression "uVar3 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar3 & 0xff000000000000)" ( (binary_expression "uVar3 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar3 & 0xff0000000000)" ( (binary_expression "uVar3 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00000000) >> 8" (parenthesized_expression "(uVar3 & 0xff00000000)" ( (binary_expression "uVar3 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff000000) << 8" (parenthesized_expression "(uVar3 & 0xff000000)" ( (binary_expression "uVar3 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar3 & 0xff0000) << 0x18" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar3 & 0xff00) << 0x28" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x38" identifier << number_literal)) )) - (pointer_expression "*(long *)(lVar4 + 8)" * (cast_expression "(long *)(lVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))))) ;) (if_statement "if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }" if (parenthesized_expression "(lVar4 + 0x80000000U < 0x100000000)" ( (binary_expression "lVar4 + 0x80000000U < 0x100000000" (binary_expression "lVar4 + 0x80000000U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }" { (expression_statement "*param_3 = lVar4 + -0x8000;" (assignment_expression "*param_3 = lVar4 + -0x8000" (pointer_expression "*param_3" * identifier) = (binary_expression "lVar4 + -0x8000" identifier + number_literal)) ;) (return_statement "return (ulong)(bVar2 & 1);" return (call_expression "(ulong)(bVar2 & 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) ))) ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: bool make_toc_relative(Powerpc_relobj<64,_true> * this,\n   Target_powerpc<64,_true> * target, Address * value) */\n\nbool __thiscall\nanon_unknown.dwarf_2cac9f::Powerpc_relobj<64,_true>::make_toc_relative\n          (Powerpc_relobj<64,_true> *this,Target_powerpc<64,_true> *target,Address *value)\n\n{\n  byte bVar1;\n  uint uVar2;\n  uint uVar3;\n  pointer puVar4;\n  _Bit_type *p_Var5;\n  _Bit_type *p_Var6;\n  Output_section *pOVar7;\n  Elf_WXword EVar8;\n  uchar *puVar9;\n  long lVar10;\n  ulong uVar11;\n  section_size_type vlen;\n  \n  uVar2 = this->toc_;\n  if (uVar2 == 0) {\n    return false;\n  }\n  puVar4 = (this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start;\n  if ((ulong)((long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar11 = (*value + 0x8000) - puVar4[uVar2];\n  EVar8 = elfcpp::Elf_file<64,_true,_gold::Object>::section_size\n                    (&(this->super_Sized_relobj_file<64,_true>).elf_file_,uVar2);\n  if (uVar11 < EVar8) {\n    uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;\n    uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;\n    p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;\n    p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    if (((uVar2 == uVar3) && (p_Var5 == p_Var6)) ||\n       ((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)))) {\n      puVar9 = gold::Sized_relobj_file<64,_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen);\n      uVar11 = *(ulong *)(puVar9 + uVar11);\n      if (target->got_ == (Output_data_got_powerpc<64,_true> *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);\n      }\n      pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_;\n      bVar1 = (pOVar7->super_Output_data).field_0x20;\n      if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_;\n      if (lVar10 + 0x80000000U < 0x100000000) {\n        *value = lVar10 - 0x8000;\n        return (bool)(bVar1 & 1);\n      }\n    }\n  }\n  return false;\n}\n\n" comment comment comment (declaration "bool __thiscall\nanon_unknown.dwarf_2cac9f::Powerpc_relobj<64,_true>::make_toc_relative\n          (Powerpc_relobj<64,_true> *this,Target_powerpc<64,_true> *target,Address *value)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_2cac9f::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::make_toc_relative\n          (Powerpc_relobj<64,_true> *this,Target_powerpc<64,_true> *target,Address *value)\n\n{\n  byte" identifier > : : (function_declarator "make_toc_relative\n          (Powerpc_relobj<64,_true> *this,Target_powerpc<64,_true> *target,Address *value)" identifier (parameter_list "(Powerpc_relobj<64,_true> *this,Target_powerpc<64,_true> *target,Address *value)" ( (parameter_declaration "Powerpc_relobj" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Target_powerpc" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *target" type_identifier (ERROR ">" >) (pointer_declarator "*target" * identifier)) , (parameter_declaration "Address *value" type_identifier (pointer_declarator "*value" * identifier)) ))) { identifier) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "pointer puVar4;" type_identifier identifier ;) (declaration "_Bit_type *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "_Bit_type *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "Output_section *pOVar7;" type_identifier (pointer_declarator "*pOVar7" * identifier) ;) (declaration "Elf_WXword EVar8;" type_identifier identifier ;) (declaration "uchar *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "section_size_type vlen;" type_identifier identifier ;) (expression_statement "uVar2 = this->toc_;" (assignment_expression "uVar2 = this->toc_" identifier = (field_expression "this->toc_" identifier -> field_identifier)) ;) (if_statement "if (uVar2 == 0) {\n    return false;\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "puVar4 = (this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start;" (assignment_expression "puVar4 = (this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start" identifier = (parenthesized_expression "(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>._M_impl.\n           _M_start" ( (ERROR "this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std::" (comma_expression "this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std" (binary_expression "this->super_Sized_relobj_file<64" (field_expression "this->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , (comma_expression "_true>).super_Sized_relobj<64,_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std" (binary_expression "_true>).super_Sized_relobj<64" (field_expression "_true>).super_Sized_relobj" identifier (ERROR ">)" > )) . field_identifier) < number_literal) , (comma_expression "_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int,_std" (binary_expression "_true>.section_offsets_.\n           super__Vector_base<long_unsigned_int" (field_expression "_true>.section_offsets_.\n           super__Vector_base" (field_expression "_true>.section_offsets_" identifier (ERROR ">" >) . field_identifier) . field_identifier) < identifier) , identifier))) : :) (field_expression "allocator<long_unsigned_int>_>._M_impl.\n           _M_start" (field_expression "allocator<long_unsigned_int>_>._M_impl" (binary_expression "allocator<long_unsigned_int>_" (binary_expression "allocator<long_unsigned_int" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ))) ;) (if_statement "if ((ulong)((long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3) <= (ulong)uVar2) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" if (parenthesized_expression "((ulong)((long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3) <= (ulong)uVar2)" ( (binary_expression "(ulong)((long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3) <= (ulong)uVar2" (call_expression "(ulong)((long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64,_true>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int,_std::allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3)" ( (binary_expression "(long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj<64" (cast_expression "(long)(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->super_Sized_relobj_file<64,_true>).super_Sized_relobj" (parenthesized_expression "(this->super_Sized_relobj_file<64,_true>)" ( (comma_expression "this->super_Sized_relobj_file<64,_true" (binary_expression "this->super_Sized_relobj_file<64" (field_expression "this->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier)) < number_literal) , (binary_expression "_true>.\n                    section_offsets_.\n                    super__Vector_base<long_unsigned_int" (field_expression "_true>.\n                    section_offsets_.\n                    super__Vector_base" (field_expression "_true>.\n                    section_offsets_" identifier (ERROR ">" >) . field_identifier) . field_identifier) < identifier) , (ERROR "_std::" identifier : :) (binary_expression "allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4 >> 3" (binary_expression "allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish - (long)puVar4" (field_expression "allocator<long_unsigned_int>_>.\n                    _M_impl._M_finish" (field_expression "allocator<long_unsigned_int>_>.\n                    _M_impl" (binary_expression "allocator<long_unsigned_int>_" (binary_expression "allocator<long_unsigned_int" identifier < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) <= (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;)) })) (expression_statement "uVar11 = (*value + 0x8000) - puVar4[uVar2];" (assignment_expression "uVar11 = (*value + 0x8000) - puVar4[uVar2]" identifier = (binary_expression "(*value + 0x8000) - puVar4[uVar2]" (parenthesized_expression "(*value + 0x8000)" ( (binary_expression "*value + 0x8000" (pointer_expression "*value" * identifier) + number_literal) )) - (subscript_expression "puVar4[uVar2]" identifier [ identifier ]))) ;) (ERROR "EVar8 = elfcpp::Elf_file<64,_true," (binary_expression "EVar8 = elfcpp::Elf_file<64" (assignment_expression "EVar8 = elfcpp" identifier = identifier) (ERROR "::Elf_file" : : identifier) < number_literal) , identifier ,) (labeled_statement "_gold::Object>::section_size\n                    (&(this->super_Sized_relobj_file<64,_true>).elf_file_,uVar2);" statement_identifier (ERROR "::Object>:" : : identifier > :) : (expression_statement "section_size\n                    (&(this->super_Sized_relobj_file<64,_true>).elf_file_,uVar2);" (call_expression "section_size\n                    (&(this->super_Sized_relobj_file<64,_true>).elf_file_,uVar2)" identifier (argument_list "(&(this->super_Sized_relobj_file<64,_true>).elf_file_,uVar2)" ( (pointer_expression "&(this->super_Sized_relobj_file<64,_true>).elf_file_" & (field_expression "(this->super_Sized_relobj_file<64,_true>).elf_file_" (parenthesized_expression "(this->super_Sized_relobj_file<64,_true>)" ( (comma_expression "this->super_Sized_relobj_file<64,_true" (binary_expression "this->super_Sized_relobj_file<64" (field_expression "this->super_Sized_relobj_file" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier)) , identifier ))) ;)) (if_statement "if (uVar11 < EVar8) {\n    uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;\n    uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;\n    p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;\n    p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    if (((uVar2 == uVar3) && (p_Var5 == p_Var6)) ||\n       ((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)))) {\n      puVar9 = gold::Sized_relobj_file<64,_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen);\n      uVar11 = *(ulong *)(puVar9 + uVar11);\n      if (target->got_ == (Output_data_got_powerpc<64,_true> *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);\n      }\n      pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_;\n      bVar1 = (pOVar7->super_Output_data).field_0x20;\n      if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_;\n      if (lVar10 + 0x80000000U < 0x100000000) {\n        *value = lVar10 - 0x8000;\n        return (bool)(bVar1 & 1);\n      }\n    }\n  }" if (parenthesized_expression "(uVar11 < EVar8)" ( (binary_expression "uVar11 < EVar8" identifier < identifier) )) (compound_statement "{\n    uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;\n    uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;\n    p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;\n    p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;\n    if (((uVar2 == uVar3) && (p_Var5 == p_Var6)) ||\n       ((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)))) {\n      puVar9 = gold::Sized_relobj_file<64,_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen);\n      uVar11 = *(ulong *)(puVar9 + uVar11);\n      if (target->got_ == (Output_data_got_powerpc<64,_true> *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);\n      }\n      pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_;\n      bVar1 = (pOVar7->super_Output_data).field_0x20;\n      if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_;\n      if (lVar10 + 0x80000000U < 0x100000000) {\n        *value = lVar10 - 0x8000;\n        return (bool)(bVar1 & 1);\n      }\n    }\n  }" { (expression_statement "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;" (field_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset" (field_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_finish" (field_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data" (field_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_" (binary_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool" (assignment_expression "uVar2 = (this->no_toc_opt_).super__Bvector_base<std" identifier = (binary_expression "(this->no_toc_opt_).super__Bvector_base<std" (field_expression "(this->no_toc_opt_).super__Bvector_base" (parenthesized_expression "(this->no_toc_opt_)" ( (field_expression "this->no_toc_opt_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;" (field_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset" (field_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start.super__Bit_iterator_base" (field_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data._M_start" (field_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n            super__Bvector_impl_data" (field_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_" (binary_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool" (assignment_expression "uVar3 = (this->no_toc_opt_).super__Bvector_base<std" identifier = (binary_expression "(this->no_toc_opt_).super__Bvector_base<std" (field_expression "(this->no_toc_opt_).super__Bvector_base" (parenthesized_expression "(this->no_toc_opt_)" ( (field_expression "this->no_toc_opt_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;" (field_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p" (field_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_finish.super__Bit_iterator_base" (field_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_finish" (field_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data" (field_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_" (binary_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool" (assignment_expression "p_Var5 = (this->no_toc_opt_).super__Bvector_base<std" identifier = (binary_expression "(this->no_toc_opt_).super__Bvector_base<std" (field_expression "(this->no_toc_opt_).super__Bvector_base" (parenthesized_expression "(this->no_toc_opt_)" ( (field_expression "this->no_toc_opt_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;" (field_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p" (field_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start.super__Bit_iterator_base" (field_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data._M_start" (field_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl.\n             super__Bvector_impl_data" (field_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_>._M_impl" (binary_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool>_" (binary_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std::allocator<bool" (assignment_expression "p_Var6 = (this->no_toc_opt_).super__Bvector_base<std" identifier = (binary_expression "(this->no_toc_opt_).super__Bvector_base<std" (field_expression "(this->no_toc_opt_).super__Bvector_base" (parenthesized_expression "(this->no_toc_opt_)" ( (field_expression "this->no_toc_opt_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::allocator" : : identifier) < identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (if_statement "if (((uVar2 == uVar3) && (p_Var5 == p_Var6)) ||\n       ((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)))) {\n      puVar9 = gold::Sized_relobj_file<64,_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen);\n      uVar11 = *(ulong *)(puVar9 + uVar11);\n      if (target->got_ == (Output_data_got_powerpc<64,_true> *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);\n      }\n      pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_;\n      bVar1 = (pOVar7->super_Output_data).field_0x20;\n      if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_;\n      if (lVar10 + 0x80000000U < 0x100000000) {\n        *value = lVar10 - 0x8000;\n        return (bool)(bVar1 & 1);\n      }\n    }" if (parenthesized_expression "(((uVar2 == uVar3) && (p_Var5 == p_Var6)) ||\n       ((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0))))" ( (binary_expression "((uVar2 == uVar3) && (p_Var5 == p_Var6)) ||\n       ((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)))" (parenthesized_expression "((uVar2 == uVar3) && (p_Var5 == p_Var6))" ( (binary_expression "(uVar2 == uVar3) && (p_Var5 == p_Var6)" (parenthesized_expression "(uVar2 == uVar3)" ( (binary_expression "uVar2 == uVar3" identifier == identifier) )) && (parenthesized_expression "(p_Var5 == p_Var6)" ( (binary_expression "p_Var5 == p_Var6" identifier == identifier) ))) )) || (parenthesized_expression "((uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)))" ( (parenthesized_expression "(uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0))" ( (binary_expression "uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3 &&\n        ((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)" (binary_expression "uVar11 >> 3 < ((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3" (binary_expression "uVar11 >> 3" identifier >> number_literal) < (binary_expression "((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8) - (ulong)uVar3" (parenthesized_expression "((ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8)" ( (binary_expression "(ulong)uVar2 + ((long)p_Var5 - (long)p_Var6) * 8" (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) + (binary_expression "((long)p_Var5 - (long)p_Var6) * 8" (parenthesized_expression "((long)p_Var5 - (long)p_Var6)" ( (binary_expression "(long)p_Var5 - (long)p_Var6" (cast_expression "(long)p_Var5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)p_Var6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) * number_literal)) )) - (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier))) && (parenthesized_expression "((p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0)" ( (binary_expression "(p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)) == 0" (parenthesized_expression "(p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f))" ( (binary_expression "p_Var6[uVar11 >> 9] & 1L << ((byte)(uVar11 >> 3) & 0x3f)" (subscript_expression "p_Var6[uVar11 >> 9]" identifier [ (binary_expression "uVar11 >> 9" identifier >> number_literal) ]) & (binary_expression "1L << ((byte)(uVar11 >> 3) & 0x3f)" number_literal << (parenthesized_expression "((byte)(uVar11 >> 3) & 0x3f)" ( (binary_expression "(byte)(uVar11 >> 3) & 0x3f" (call_expression "(byte)(uVar11 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar11 >> 3)" ( (binary_expression "uVar11 >> 3" identifier >> number_literal) ))) & number_literal) )))) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      puVar9 = gold::Sized_relobj_file<64,_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen);\n      uVar11 = *(ulong *)(puVar9 + uVar11);\n      if (target->got_ == (Output_data_got_powerpc<64,_true> *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);\n      }\n      pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_;\n      bVar1 = (pOVar7->super_Output_data).field_0x20;\n      if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }\n      lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_;\n      if (lVar10 + 0x80000000U < 0x100000000) {\n        *value = lVar10 - 0x8000;\n        return (bool)(bVar1 & 1);\n      }\n    }" { (ERROR "puVar9 = gold::" (assignment_expression "puVar9 = gold" identifier = identifier) : :) (expression_statement "Sized_relobj_file<64,_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen);" (comma_expression "Sized_relobj_file<64,_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen)" (binary_expression "Sized_relobj_file<64" identifier < number_literal) , (binary_expression "_true>::do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen)" identifier > (ERROR "::" : :) (call_expression "do_get_output_view\n                         (&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen)" identifier (argument_list "(&this->super_Sized_relobj_file<64,_true>,this->toc_,&vlen)" ( (binary_expression "&this->super_Sized_relobj_file<64" (pointer_expression "&this->super_Sized_relobj_file" & (field_expression "this->super_Sized_relobj_file" identifier -> field_identifier)) < number_literal) , identifier (ERROR ">" >) , (field_expression "this->toc_" identifier -> field_identifier) , (pointer_expression "&vlen" & identifier) ))))) ;) (expression_statement "uVar11 = *(ulong *)(puVar9 + uVar11);" (assignment_expression "uVar11 = *(ulong *)(puVar9 + uVar11)" identifier = (pointer_expression "*(ulong *)(puVar9 + uVar11)" * (cast_expression "(ulong *)(puVar9 + uVar11)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + uVar11)" ( (binary_expression "puVar9 + uVar11" identifier + identifier) ))))) ;) (if_statement "if (target->got_ == (Output_data_got_powerpc<64,_true> *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);\n      }" if (parenthesized_expression "(target->got_ == (Output_data_got_powerpc<64,_true> *)0x0)" ( (binary_expression "target->got_ == (Output_data_got_powerpc<64,_true> *)0x0)" (field_expression "target->got_" identifier -> field_identifier) == (parenthesized_expression "(Output_data_got_powerpc<64,_true> *)0x0)" ( (comma_expression "Output_data_got_powerpc<64,_true> *)0x0" (binary_expression "Output_data_got_powerpc<64" identifier < number_literal) , (binary_expression "_true> *)0x0" identifier > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);\n      }" { comment (expression_statement "Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this);" (comma_expression "Target_powerpc<64,_true>::got_section((Target_powerpc<64,_true> *)this)" (binary_expression "Target_powerpc<64" identifier < number_literal) , (binary_expression "_true>::got_section((Target_powerpc<64,_true> *)this)" identifier > (ERROR "::" : :) (call_expression "got_section((Target_powerpc<64,_true> *)this)" identifier (argument_list "((Target_powerpc<64,_true> *)this)" ( (parenthesized_expression "(Target_powerpc<64,_true> *)this)" ( (comma_expression "Target_powerpc<64,_true> *)this" (binary_expression "Target_powerpc<64" identifier < number_literal) , (binary_expression "_true> *)this" identifier > (pointer_expression "*)this" * (ERROR ")" )) identifier))) )) ))))) ;) })) (expression_statement "pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_;" (assignment_expression "pOVar7 = (target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_" identifier = (field_expression "(target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data.output_section_" (field_expression "(target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build.super_Output_section_data" (field_expression "(target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base.\n               super_Output_section_data_build" (field_expression "(target->got_->super_Output_data_got<64,_true>).super_Output_data_got_base" (parenthesized_expression "(target->got_->super_Output_data_got<64,_true>)" ( (comma_expression "target->got_->super_Output_data_got<64,_true" (binary_expression "target->got_->super_Output_data_got<64" (field_expression "target->got_->super_Output_data_got" (field_expression "target->got_" identifier -> field_identifier) -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "bVar1 = (pOVar7->super_Output_data).field_0x20;" (assignment_expression "bVar1 = (pOVar7->super_Output_data).field_0x20" identifier = (field_expression "(pOVar7->super_Output_data).field_0x20" (parenthesized_expression "(pOVar7->super_Output_data)" ( (field_expression "pOVar7->super_Output_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n      }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");" statement_identifier : (ERROR ":" :) (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 ") ))) ;)) })) (expression_statement "lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_;" (assignment_expression "lVar10 = (uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_" identifier = (binary_expression "(uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38) - (pOVar7->super_Output_data).address_" (parenthesized_expression "(uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38)" ( (binary_expression "uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28\n               | uVar11 << 0x38" (binary_expression "uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18 | (uVar11 & 0xff00) << 0x28" (binary_expression "uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8 | (uVar11 & 0xff0000) << 0x18" (binary_expression "uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8 |\n                (uVar11 & 0xff000000) << 8" (binary_expression "uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18 | (uVar11 & 0xff00000000) >> 8" (binary_expression "uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28 |\n                (uVar11 & 0xff0000000000) >> 0x18" (binary_expression "uVar11 >> 0x38 | (uVar11 & 0xff000000000000) >> 0x28" (binary_expression "uVar11 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar11 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar11 & 0xff000000000000)" ( (binary_expression "uVar11 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar11 & 0xff0000000000)" ( (binary_expression "uVar11 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff00000000) >> 8" (parenthesized_expression "(uVar11 & 0xff00000000)" ( (binary_expression "uVar11 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar11 & 0xff000000) << 8" (parenthesized_expression "(uVar11 & 0xff000000)" ( (binary_expression "uVar11 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar11 & 0xff0000) << 0x18" (parenthesized_expression "(uVar11 & 0xff0000)" ( (binary_expression "uVar11 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar11 & 0xff00) << 0x28" (parenthesized_expression "(uVar11 & 0xff00)" ( (binary_expression "uVar11 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar11 << 0x38" identifier << number_literal)) )) - (field_expression "(pOVar7->super_Output_data).address_" (parenthesized_expression "(pOVar7->super_Output_data)" ( (field_expression "pOVar7->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (lVar10 + 0x80000000U < 0x100000000) {\n        *value = lVar10 - 0x8000;\n        return (bool)(bVar1 & 1);\n      }" if (parenthesized_expression "(lVar10 + 0x80000000U < 0x100000000)" ( (binary_expression "lVar10 + 0x80000000U < 0x100000000" (binary_expression "lVar10 + 0x80000000U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        *value = lVar10 - 0x8000;\n        return (bool)(bVar1 & 1);\n      }" { (expression_statement "*value = lVar10 - 0x8000;" (assignment_expression "*value = lVar10 - 0x8000" (pointer_expression "*value" * identifier) = (binary_expression "lVar10 - 0x8000" identifier - number_literal)) ;) (return_statement "return (bool)(bVar1 & 1);" return (cast_expression "(bool)(bVar1 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) ))) ;) })) })) })) (return_statement "return false;" return false ;) (ERROR "}" }))
(translation_unit "ulong FUN_0019b810(long param_1,long param_2,long *param_3)\n\n{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "ulong FUN_0019b810(long param_1,long param_2,long *param_3)\n\n{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0019b810(long param_1,long param_2,long *param_3)" identifier (parameter_list "(long param_1,long param_2,long *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}" { (declaration "ulong *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uStack_54;" type_identifier identifier ;) (declaration "undefined1 local_30 [16];" type_identifier (array_declarator "local_30 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x22c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x22c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x22c)" * (cast_expression "(uint *)(param_1 + 0x22c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22c)" ( (binary_expression "param_1 + 0x22c" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" if (parenthesized_expression "((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6)" ( (binary_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6" (call_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3)" ( (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3" (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0)" (pointer_expression "*(long *)(param_1 + 0xe8)" * (cast_expression "(long *)(param_1 + 0xe8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) ))))) >> number_literal) ))) <= (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) )) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" { (expression_statement "FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;) })) (expression_statement "uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);" (assignment_expression "uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" identifier = (binary_expression "(*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" (parenthesized_expression "(*param_3 + 0x8000)" ( (binary_expression "*param_3 + 0x8000" (pointer_expression "*param_3" * identifier) + number_literal) )) - (pointer_expression "*(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" ( (binary_expression "*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8" (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) + (binary_expression "(ulong)uVar6 * 8" (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))))) ;) (expression_statement "uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);" (assignment_expression "uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6)" identifier = (call_expression "FUN_001c4aa0(param_1 + 0xf8,uVar6)" identifier (argument_list "(param_1 + 0xf8,uVar6)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) , identifier )))) ;) (if_statement "if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }" { (expression_statement "lVar4 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (if_statement "if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }" if (parenthesized_expression "(((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0))))" ( (binary_expression "((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))" (parenthesized_expression "((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4))" ( (binary_expression "(*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)" (parenthesized_expression "(*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240))" ( (binary_expression "*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)" (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) == (pointer_expression "*(uint *)(param_1 + 0x240)" * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) )) && (parenthesized_expression "(*(long *)(param_1 + 0x248) == lVar4)" ( (binary_expression "*(long *)(param_1 + 0x248) == lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) == identifier) ))) )) || (parenthesized_expression "((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))" ( (parenthesized_expression "(uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0))" ( (binary_expression "uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)" (binary_expression "uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240)" (binary_expression "uVar7 >> 3" identifier >> number_literal) < (binary_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8)" ( (binary_expression "(ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) + (binary_expression "(*(long *)(param_1 + 0x248) - lVar4) * 8" (parenthesized_expression "(*(long *)(param_1 + 0x248) - lVar4)" ( (binary_expression "*(long *)(param_1 + 0x248) - lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) - identifier) )) * number_literal)) )) - (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) )))))) && (parenthesized_expression "((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)" ( (binary_expression "(*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0" (parenthesized_expression "(*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f))" ( (binary_expression "*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)" (pointer_expression "*(ulong *)(lVar4 + (uVar7 >> 9) * 8)" * (cast_expression "(ulong *)(lVar4 + (uVar7 >> 9) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + (uVar7 >> 9) * 8)" ( (binary_expression "lVar4 + (uVar7 >> 9) * 8" identifier + (binary_expression "(uVar7 >> 9) * 8" (parenthesized_expression "(uVar7 >> 9)" ( (binary_expression "uVar7 >> 9" identifier >> number_literal) )) * number_literal)) )))) & (binary_expression "1L << ((byte)(uVar7 >> 3) & 0x3f)" number_literal << (parenthesized_expression "((byte)(uVar7 >> 3) & 0x3f)" ( (binary_expression "(byte)(uVar7 >> 3) & 0x3f" (call_expression "(byte)(uVar7 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar7 >> 3)" ( (binary_expression "uVar7 >> 3" identifier >> number_literal) ))) & number_literal) )))) )) == number_literal) ))) )) ))) )) (compound_statement "{\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }" { (expression_statement "uVar8 = (ulong)*(uint *)(param_1 + 0x22c);" (assignment_expression "uVar8 = (ulong)*(uint *)(param_1 + 0x22c)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x22c)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x22c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22c)" ( (binary_expression "param_1 + 0x22c" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);" (assignment_expression "lVar4 = FUN_002ad0d0(param_1,uVar8,local_30)" identifier = (call_expression "FUN_002ad0d0(param_1,uVar8,local_30)" identifier (argument_list "(param_1,uVar8,local_30)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar3 = *(ulong *)(lVar4 + uVar7);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + uVar7)" identifier = (pointer_expression "*(ulong *)(lVar4 + uVar7)" * (cast_expression "(ulong *)(lVar4 + uVar7)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + uVar7)" ( (binary_expression "lVar4 + uVar7" identifier + identifier) ))))) ;) (if_statement "if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }" if (parenthesized_expression "(*(long *)(param_2 + 0x20) == 0)" ( (binary_expression "*(long *)(param_2 + 0x20) == 0" (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }" { (expression_statement "FUN_0016d960();" (call_expression "FUN_0016d960()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar7 = (ulong)*(uint *)(param_1 + 0x250);" (assignment_expression "uVar7 = (ulong)*(uint *)(param_1 + 0x250)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x248);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x248)" identifier = (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) ))))) ;) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (if_statement "if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }" if (parenthesized_expression "((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250)))" ( (binary_expression "(lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))" (parenthesized_expression "(lVar4 == lVar9)" ( (binary_expression "lVar4 == lVar9" identifier == identifier) )) && (parenthesized_expression "(*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))" ( (binary_expression "*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250)" (pointer_expression "*(uint *)(param_1 + 0x240)" * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) )))) == (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ))) )) (compound_statement "{\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }" { (expression_statement "uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));" (assignment_expression "uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" identifier = (call_expression "FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" identifier (argument_list "(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) , (pointer_expression "*(undefined4 *)(param_1 + 0x22c)" * (cast_expression "(undefined4 *)(param_1 + 0x22c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22c)" ( (binary_expression "param_1 + 0x22c" identifier + number_literal) )))) )))) ;) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = uVar5 >> 3;" (assignment_expression "uVar5 = uVar5 >> 3" identifier = (binary_expression "uVar5 >> 3" identifier >> number_literal)) ;) (expression_statement "uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;" (assignment_expression "uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3" identifier = (binary_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8)" ( (binary_expression "(ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) + (binary_expression "(*(long *)(param_1 + 0x248) - lVar9) * 8" (parenthesized_expression "(*(long *)(param_1 + 0x248) - lVar9)" ( (binary_expression "*(long *)(param_1 + 0x248) - lVar9" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) - identifier) )) * number_literal)) )) - identifier)) ;) (if_statement "if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" if (parenthesized_expression "(uVar5 < uVar7)" ( (binary_expression "uVar5 < uVar7" identifier < identifier) )) (compound_statement "{\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }" { (expression_statement "uVar6 = (uint)(uVar5 + uVar3) & 0x3f;" (assignment_expression "uVar6 = (uint)(uVar5 + uVar3) & 0x3f" identifier = (binary_expression "(uint)(uVar5 + uVar3) & 0x3f" (call_expression "(uint)(uVar5 + uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 + uVar3)" ( (binary_expression "uVar5 + uVar3" identifier + identifier) ))) & number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar6;" (assignment_expression "uVar7 = (ulong)uVar6" identifier = (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;" (assignment_expression "lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8" identifier = (binary_expression "lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8" identifier + (binary_expression "((long)(uVar5 + uVar3) >> 6) * 8" (parenthesized_expression "((long)(uVar5 + uVar3) >> 6)" ( (binary_expression "(long)(uVar5 + uVar3) >> 6" (cast_expression "(long)(uVar5 + uVar3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar5 + uVar3)" ( (binary_expression "uVar5 + uVar3" identifier + identifier) ))) >> number_literal) )) * number_literal))) ;) (expression_statement "*(long *)(param_1 + 0x248) = lVar4;" (assignment_expression "*(long *)(param_1 + 0x248) = lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x250) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x250) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" else (compound_statement "{\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" { (expression_statement "FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);" (call_expression "FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0)" identifier (argument_list "(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) , (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) )))) , (call_expression "CONCAT44(uStack_54,*(uint *)(param_1 + 0x250))" identifier (argument_list "(uStack_54,*(uint *)(param_1 + 0x250))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0x250)" * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) ))) , (binary_expression "uVar5 - uVar7" identifier - identifier) , number_literal ))) ;) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" identifier = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = (ulong)*(uint *)(param_1 + 0x250);" (assignment_expression "uVar7 = (ulong)*(uint *)(param_1 + 0x250)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x250)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x248);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x248)" identifier = (pointer_expression "*(long *)(param_1 + 0x248)" * (cast_expression "(long *)(param_1 + 0x248)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" identifier = (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x240)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x240)" ( (binary_expression "param_1 + 0x240" identifier + number_literal) ))))) ;) }))) })) (expression_statement "uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;" (assignment_expression "uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3" identifier = (binary_expression "(uVar7 + (lVar4 - lVar9) * 8) - uVar3" (parenthesized_expression "(uVar7 + (lVar4 - lVar9) * 8)" ( (binary_expression "uVar7 + (lVar4 - lVar9) * 8" identifier + (binary_expression "(lVar4 - lVar9) * 8" (parenthesized_expression "(lVar4 - lVar9)" ( (binary_expression "lVar4 - lVar9" identifier - identifier) )) * number_literal)) )) - identifier)) ;) (if_statement "if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }" if (parenthesized_expression "(uVar8 >> 3 < uVar3)" ( (binary_expression "uVar8 >> 3 < uVar3" (binary_expression "uVar8 >> 3" identifier >> number_literal) < identifier) )) (compound_statement "{\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }" { (expression_statement "uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);" (assignment_expression "uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f)" identifier = (binary_expression "1L << ((byte)(uVar8 >> 3) & 0x3f)" number_literal << (parenthesized_expression "((byte)(uVar8 >> 3) & 0x3f)" ( (binary_expression "(byte)(uVar8 >> 3) & 0x3f" (call_expression "(byte)(uVar8 >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar8 >> 3)" ( (binary_expression "uVar8 >> 3" identifier >> number_literal) ))) & number_literal) )))) ;) (expression_statement "puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);" (assignment_expression "puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8)" identifier = (cast_expression "(ulong *)(lVar9 + (uVar8 >> 9) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar9 + (uVar8 >> 9) * 8)" ( (binary_expression "lVar9 + (uVar8 >> 9) * 8" identifier + (binary_expression "(uVar8 >> 9) * 8" (parenthesized_expression "(uVar8 >> 9)" ( (binary_expression "uVar8 >> 9" identifier >> number_literal) )) * number_literal)) )))) ;) (expression_statement "*puVar1 = *puVar1 | uVar3;" (assignment_expression "*puVar1 = *puVar1 | uVar3" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | uVar3" (pointer_expression "*puVar1" * identifier) | identifier)) ;) })) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);" (assignment_expression "lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 0x20) + 0x28)" * (cast_expression "(long *)(*(long *)(param_2 + 0x20) + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x20) + 0x28)" ( (binary_expression "*(long *)(param_2 + 0x20) + 0x28" (pointer_expression "*(long *)(param_2 + 0x20)" * (cast_expression "(long *)(param_2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "bVar2 = *(byte *)(lVar4 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar4 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar4 + 0x20)" * (cast_expression "(byte *)(lVar4 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }" if (parenthesized_expression "((bVar2 & 1) == 0)" ( (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }" { (expression_statement "FUN_001e9890("../../gold/output.h",0xc5,"address");" (call_expression "FUN_001e9890("../../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 ") ))) ;) })) (expression_statement "lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);" (assignment_expression "lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8)" identifier = (binary_expression "(uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8)" (parenthesized_expression "(uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38)" ( (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28" (binary_expression "uVar3 >> 0x38" identifier >> number_literal) | (binary_expression "(uVar3 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar3 & 0xff000000000000)" ( (binary_expression "uVar3 & 0xff000000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar3 & 0xff0000000000)" ( (binary_expression "uVar3 & 0xff0000000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff00000000) >> 8" (parenthesized_expression "(uVar3 & 0xff00000000)" ( (binary_expression "uVar3 & 0xff00000000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar3 & 0xff000000) << 8" (parenthesized_expression "(uVar3 & 0xff000000)" ( (binary_expression "uVar3 & 0xff000000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar3 & 0xff0000) << 0x18" (parenthesized_expression "(uVar3 & 0xff0000)" ( (binary_expression "uVar3 & 0xff0000" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar3 & 0xff00) << 0x28" (parenthesized_expression "(uVar3 & 0xff00)" ( (binary_expression "uVar3 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar3 << 0x38" identifier << number_literal)) )) - (pointer_expression "*(long *)(lVar4 + 8)" * (cast_expression "(long *)(lVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) )))))) ;) (if_statement "if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }" if (parenthesized_expression "(lVar4 + 0x80000000U < 0x100000000)" ( (binary_expression "lVar4 + 0x80000000U < 0x100000000" (binary_expression "lVar4 + 0x80000000U" identifier + number_literal) < number_literal) )) (compound_statement "{\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }" { (expression_statement "*param_3 = lVar4 + -0x8000;" (assignment_expression "*param_3 = lVar4 + -0x8000" (pointer_expression "*param_3" * identifier) = (binary_expression "lVar4 + -0x8000" identifier + number_literal)) ;) (return_statement "return (ulong)(bVar2 & 1);" return (call_expression "(ulong)(bVar2 & 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) ))) ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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) ))) <= (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 (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT >> LIT) < (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) * LIT)) )) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) )))) & (binary_expression LIT << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) )))) )) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) * LIT)) )) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) >> LIT) )) * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) , (binary_expression IDENT - IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT)) )) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (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 (parenthesized_expression ( (binary_expression IDENT & 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 = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) ;) })) })) })) (return_statement return LIT ;) })))
(function_definition "ulong FUN_0019b810(long param_1,long param_2,long *param_3)\n\n{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}" (type_identifier "ulong") (function_declarator "FUN_0019b810(long param_1,long param_2,long *param_3)" (identifier "FUN_0019b810") (parameter_list "(long param_1,long param_2,long *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  ulong *puVar1;\n  byte bVar2;\n  ulong uVar3;\n  long lVar4;\n  ulong uVar5;\n  uint uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  long lVar9;\n  undefined4 uStack_54;\n  undefined1 local_30 [16];\n  \n  uVar6 = *(uint *)(param_1 + 0x22c);\n  if (uVar6 == 0) {\n    return 0;\n  }\n  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }\n  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);\n  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);\n  if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "ulong *puVar1;" (type_identifier "ulong") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "undefined4 uStack_54;" (type_identifier "undefined4") (identifier "uStack_54") (; ";")) (declaration "undefined1 local_30 [16];" (type_identifier "undefined1") (array_declarator "local_30 [16]" (identifier "local_30") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "uVar6 = *(uint *)(param_1 + 0x22c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x22c)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_1 + 0x22c)" (* "*") (cast_expression "(uint *)(param_1 + 0x22c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x22c)" (( "(") (binary_expression "param_1 + 0x22c" (identifier "param_1") (+ "+") (number_literal "0x22c")) () ")"))))) (; ";")) (if_statement "if (uVar6 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" (if "if") (parenthesized_expression "((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6)" (( "(") (binary_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6" (call_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3)" (( "(") (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3" (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0)" (pointer_expression "*(long *)(param_1 + 0xe8)" (* "*") (cast_expression "(long *)(param_1 + 0xe8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) (- "-") (pointer_expression "*(long *)(param_1 + 0xe0)" (* "*") (cast_expression "(long *)(param_1 + 0xe0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")"))))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6"))) () ")")) (compound_statement "{\n                    \n    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");\n  }" ({ "{") (expression_statement "FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset")" (identifier "FUN_001e9890") (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x7f7") (, ",") (string_literal ""get_output_section_offset"" (" """) (string_content "get_output_section_offset") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);" (assignment_expression "uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" (identifier "uVar7") (= "=") (binary_expression "(*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" (parenthesized_expression "(*param_3 + 0x8000)" (( "(") (binary_expression "*param_3 + 0x8000" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x8000")) () ")")) (- "-") (pointer_expression "*(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8)" (( "(") (binary_expression "*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8" (pointer_expression "*(long *)(param_1 + 0xe0)" (* "*") (cast_expression "(long *)(param_1 + 0xe0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")")))) (+ "+") (binary_expression "(ulong)uVar6 * 8" (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6")) (* "*") (number_literal "8"))) () ")")))))) (; ";")) (expression_statement "uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);" (assignment_expression "uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6)" (identifier "uVar3") (= "=") (call_expression "FUN_001c4aa0(param_1 + 0xf8,uVar6)" (identifier "FUN_001c4aa0") (argument_list "(param_1 + 0xf8,uVar6)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) (, ",") (identifier "uVar6") () ")")))) (; ";")) (if_statement "if (uVar7 < uVar3) {\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(uVar7 < uVar3)" (( "(") (binary_expression "uVar7 < uVar3" (identifier "uVar7") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n    lVar4 = *(long *)(param_1 + 0x238);\n    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }\n  }" ({ "{") (expression_statement "lVar4 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x238)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (if_statement "if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }" (if "if") (parenthesized_expression "(((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0))))" (( "(") (binary_expression "((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)) ||\n       ((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))" (parenthesized_expression "((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4))" (( "(") (binary_expression "(*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&\n        (*(long *)(param_1 + 0x248) == lVar4)" (parenthesized_expression "(*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240))" (( "(") (binary_expression "*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)" (pointer_expression "*(uint *)(param_1 + 0x250)" (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) (== "==") (pointer_expression "*(uint *)(param_1 + 0x240)" (* "*") (cast_expression "(uint *)(param_1 + 0x240)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(param_1 + 0x248) == lVar4)" (( "(") (binary_expression "*(long *)(param_1 + 0x248) == lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" (* "*") (cast_expression "(long *)(param_1 + 0x248)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (== "==") (identifier "lVar4")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))" (( "(") (parenthesized_expression "(uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0))" (( "(") (binary_expression "uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240) &&\n        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)" (binary_expression "uVar7 >> 3 <\n         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240)" (binary_expression "uVar7 >> 3" (identifier "uVar7") (>> ">>") (number_literal "3")) (< "<") (binary_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -\n         (ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8)" (( "(") (binary_expression "(ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) (+ "+") (binary_expression "(*(long *)(param_1 + 0x248) - lVar4) * 8" (parenthesized_expression "(*(long *)(param_1 + 0x248) - lVar4)" (( "(") (binary_expression "*(long *)(param_1 + 0x248) - lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" (* "*") (cast_expression "(long *)(param_1 + 0x248)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (- "-") (identifier "lVar4")) () ")")) (* "*") (number_literal "8"))) () ")")) (- "-") (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x240)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")")))))) (&& "&&") (parenthesized_expression "((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)" (( "(") (binary_expression "(*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0" (parenthesized_expression "(*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f))" (( "(") (binary_expression "*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)" (pointer_expression "*(ulong *)(lVar4 + (uVar7 >> 9) * 8)" (* "*") (cast_expression "(ulong *)(lVar4 + (uVar7 >> 9) * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + (uVar7 >> 9) * 8)" (( "(") (binary_expression "lVar4 + (uVar7 >> 9) * 8" (identifier "lVar4") (+ "+") (binary_expression "(uVar7 >> 9) * 8" (parenthesized_expression "(uVar7 >> 9)" (( "(") (binary_expression "uVar7 >> 9" (identifier "uVar7") (>> ">>") (number_literal "9")) () ")")) (* "*") (number_literal "8"))) () ")")))) (& "&") (binary_expression "1L << ((byte)(uVar7 >> 3) & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "((byte)(uVar7 >> 3) & 0x3f)" (( "(") (binary_expression "(byte)(uVar7 >> 3) & 0x3f" (call_expression "(byte)(uVar7 >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar7 >> 3)" (( "(") (binary_expression "uVar7 >> 3" (identifier "uVar7") (>> ">>") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")")))) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);\n      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);\n      uVar3 = *(ulong *)(lVar4 + uVar7);\n      if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }\n      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);\n      bVar2 = *(byte *)(lVar4 + 0x20);\n      if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }\n      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);\n      if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }\n    }" ({ "{") (expression_statement "uVar8 = (ulong)*(uint *)(param_1 + 0x22c);" (assignment_expression "uVar8 = (ulong)*(uint *)(param_1 + 0x22c)" (identifier "uVar8") (= "=") (binary_expression "(ulong)*(uint *)(param_1 + 0x22c)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x22c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x22c)" (( "(") (binary_expression "param_1 + 0x22c" (identifier "param_1") (+ "+") (number_literal "0x22c")) () ")"))))) (; ";")) (expression_statement "lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);" (assignment_expression "lVar4 = FUN_002ad0d0(param_1,uVar8,local_30)" (identifier "lVar4") (= "=") (call_expression "FUN_002ad0d0(param_1,uVar8,local_30)" (identifier "FUN_002ad0d0") (argument_list "(param_1,uVar8,local_30)" (( "(") (identifier "param_1") (, ",") (identifier "uVar8") (, ",") (identifier "local_30") () ")")))) (; ";")) (expression_statement "uVar3 = *(ulong *)(lVar4 + uVar7);" (assignment_expression "uVar3 = *(ulong *)(lVar4 + uVar7)" (identifier "uVar3") (= "=") (pointer_expression "*(ulong *)(lVar4 + uVar7)" (* "*") (cast_expression "(ulong *)(lVar4 + uVar7)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + uVar7)" (( "(") (binary_expression "lVar4 + uVar7" (identifier "lVar4") (+ "+") (identifier "uVar7")) () ")"))))) (; ";")) (if_statement "if (*(long *)(param_2 + 0x20) == 0) {\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_2 + 0x20) == 0)" (( "(") (binary_expression "*(long *)(param_2 + 0x20) == 0" (pointer_expression "*(long *)(param_2 + 0x20)" (* "*") (cast_expression "(long *)(param_2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0016d960();\n        uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n        uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n        lVar4 = *(long *)(param_1 + 0x248);\n        lVar9 = *(long *)(param_1 + 0x238);\n        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }\n        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;\n        if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }\n        return uVar3;\n      }" ({ "{") (expression_statement "FUN_0016d960();" (call_expression "FUN_0016d960()" (identifier "FUN_0016d960") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar7 = (ulong)*(uint *)(param_1 + 0x250);" (assignment_expression "uVar7 = (ulong)*(uint *)(param_1 + 0x250)" (identifier "uVar7") (= "=") (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) (; ";")) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" (identifier "uVar3") (= "=") (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x240)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")"))))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 0x248);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x248)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x248)" (* "*") (cast_expression "(long *)(param_1 + 0x248)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")"))))) (; ";")) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" (identifier "lVar9") (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (if_statement "if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }" (if "if") (parenthesized_expression "((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250)))" (( "(") (binary_expression "(lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))" (parenthesized_expression "(lVar4 == lVar9)" (( "(") (binary_expression "lVar4 == lVar9" (identifier "lVar4") (== "==") (identifier "lVar9")) () ")")) (&& "&&") (parenthesized_expression "(*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))" (( "(") (binary_expression "*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250)" (pointer_expression "*(uint *)(param_1 + 0x240)" (* "*") (cast_expression "(uint *)(param_1 + 0x240)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")")))) (== "==") (pointer_expression "*(uint *)(param_1 + 0x250)" (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));\n          lVar9 = *(long *)(param_1 + 0x238);\n          uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          uVar5 = uVar5 >> 3;\n          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;\n          if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }\n        }" ({ "{") (expression_statement "uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));" (assignment_expression "uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" (identifier "uVar5") (= "=") (call_expression "FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" (identifier "FUN_001c4aa0") (argument_list "(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c))" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x22c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x22c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x22c)" (( "(") (binary_expression "param_1 + 0x22c" (identifier "param_1") (+ "+") (number_literal "0x22c")) () ")")))) () ")")))) (; ";")) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" (identifier "lVar9") (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" (identifier "uVar3") (= "=") (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x240)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")"))))) (; ";")) (expression_statement "uVar5 = uVar5 >> 3;" (assignment_expression "uVar5 = uVar5 >> 3" (identifier "uVar5") (= "=") (binary_expression "uVar5 >> 3" (identifier "uVar5") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3;" (assignment_expression "uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3" (identifier "uVar7") (= "=") (binary_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -\n                  uVar3" (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8)" (( "(") (binary_expression "(ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8" (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) (+ "+") (binary_expression "(*(long *)(param_1 + 0x248) - lVar9) * 8" (parenthesized_expression "(*(long *)(param_1 + 0x248) - lVar9)" (( "(") (binary_expression "*(long *)(param_1 + 0x248) - lVar9" (pointer_expression "*(long *)(param_1 + 0x248)" (* "*") (cast_expression "(long *)(param_1 + 0x248)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (- "-") (identifier "lVar9")) () ")")) (* "*") (number_literal "8"))) () ")")) (- "-") (identifier "uVar3"))) (; ";")) (if_statement "if (uVar5 < uVar7) {\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }\n          else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" (if "if") (parenthesized_expression "(uVar5 < uVar7)" (( "(") (binary_expression "uVar5 < uVar7" (identifier "uVar5") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;\n            uVar7 = (ulong)uVar6;\n            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;\n            *(long *)(param_1 + 0x248) = lVar4;\n            *(uint *)(param_1 + 0x250) = uVar6;\n          }" ({ "{") (expression_statement "uVar6 = (uint)(uVar5 + uVar3) & 0x3f;" (assignment_expression "uVar6 = (uint)(uVar5 + uVar3) & 0x3f" (identifier "uVar6") (= "=") (binary_expression "(uint)(uVar5 + uVar3) & 0x3f" (call_expression "(uint)(uVar5 + uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 + uVar3)" (( "(") (binary_expression "uVar5 + uVar3" (identifier "uVar5") (+ "+") (identifier "uVar3")) () ")"))) (& "&") (number_literal "0x3f"))) (; ";")) (expression_statement "uVar7 = (ulong)uVar6;" (assignment_expression "uVar7 = (ulong)uVar6" (identifier "uVar7") (= "=") (cast_expression "(ulong)uVar6" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;" (assignment_expression "lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8" (identifier "lVar4") (= "=") (binary_expression "lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8" (identifier "lVar9") (+ "+") (binary_expression "((long)(uVar5 + uVar3) >> 6) * 8" (parenthesized_expression "((long)(uVar5 + uVar3) >> 6)" (( "(") (binary_expression "(long)(uVar5 + uVar3) >> 6" (cast_expression "(long)(uVar5 + uVar3)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar5 + uVar3)" (( "(") (binary_expression "uVar5 + uVar3" (identifier "uVar5") (+ "+") (identifier "uVar3")) () ")"))) (>> ">>") (number_literal "6")) () ")")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "*(long *)(param_1 + 0x248) = lVar4;" (assignment_expression "*(long *)(param_1 + 0x248) = lVar4" (pointer_expression "*(long *)(param_1 + 0x248)" (* "*") (cast_expression "(long *)(param_1 + 0x248)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x250) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x250) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x250)" (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (} "}")) (else_clause "else {\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" (else "else") (compound_statement "{\n            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);\n            lVar9 = *(long *)(param_1 + 0x238);\n            uVar7 = (ulong)*(uint *)(param_1 + 0x250);\n            lVar4 = *(long *)(param_1 + 0x248);\n            uVar3 = (ulong)*(uint *)(param_1 + 0x240);\n          }" ({ "{") (expression_statement "FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);" (call_expression "FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0)" (identifier "FUN_001be8c0") (argument_list "(param_1 + 0x238,*(long *)(param_1 + 0x248),\n                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) (, ",") (pointer_expression "*(long *)(param_1 + 0x248)" (* "*") (cast_expression "(long *)(param_1 + 0x248)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")")))) (, ",") (call_expression "CONCAT44(uStack_54,*(uint *)(param_1 + 0x250))" (identifier "CONCAT44") (argument_list "(uStack_54,*(uint *)(param_1 + 0x250))" (( "(") (identifier "uStack_54") (, ",") (pointer_expression "*(uint *)(param_1 + 0x250)" (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) () ")"))) (, ",") (binary_expression "uVar5 - uVar7" (identifier "uVar5") (- "-") (identifier "uVar7")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "lVar9 = *(long *)(param_1 + 0x238);" (assignment_expression "lVar9 = *(long *)(param_1 + 0x238)" (identifier "lVar9") (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (expression_statement "uVar7 = (ulong)*(uint *)(param_1 + 0x250);" (assignment_expression "uVar7 = (ulong)*(uint *)(param_1 + 0x250)" (identifier "uVar7") (= "=") (binary_expression "(ulong)*(uint *)(param_1 + 0x250)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x250)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 0x248);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x248)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x248)" (* "*") (cast_expression "(long *)(param_1 + 0x248)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")"))))) (; ";")) (expression_statement "uVar3 = (ulong)*(uint *)(param_1 + 0x240);" (assignment_expression "uVar3 = (ulong)*(uint *)(param_1 + 0x240)" (identifier "uVar3") (= "=") (binary_expression "(ulong)*(uint *)(param_1 + 0x240)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x240)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x240)" (( "(") (binary_expression "param_1 + 0x240" (identifier "param_1") (+ "+") (number_literal "0x240")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;" (assignment_expression "uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3" (identifier "uVar3") (= "=") (binary_expression "(uVar7 + (lVar4 - lVar9) * 8) - uVar3" (parenthesized_expression "(uVar7 + (lVar4 - lVar9) * 8)" (( "(") (binary_expression "uVar7 + (lVar4 - lVar9) * 8" (identifier "uVar7") (+ "+") (binary_expression "(lVar4 - lVar9) * 8" (parenthesized_expression "(lVar4 - lVar9)" (( "(") (binary_expression "lVar4 - lVar9" (identifier "lVar4") (- "-") (identifier "lVar9")) () ")")) (* "*") (number_literal "8"))) () ")")) (- "-") (identifier "uVar3"))) (; ";")) (if_statement "if (uVar8 >> 3 < uVar3) {\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }" (if "if") (parenthesized_expression "(uVar8 >> 3 < uVar3)" (( "(") (binary_expression "uVar8 >> 3 < uVar3" (binary_expression "uVar8 >> 3" (identifier "uVar8") (>> ">>") (number_literal "3")) (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);\n          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);\n          *puVar1 = *puVar1 | uVar3;\n        }" ({ "{") (expression_statement "uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);" (assignment_expression "uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f)" (identifier "uVar3") (= "=") (binary_expression "1L << ((byte)(uVar8 >> 3) & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "((byte)(uVar8 >> 3) & 0x3f)" (( "(") (binary_expression "(byte)(uVar8 >> 3) & 0x3f" (call_expression "(byte)(uVar8 >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar8 >> 3)" (( "(") (binary_expression "uVar8 >> 3" (identifier "uVar8") (>> ">>") (number_literal "3")) () ")"))) (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);" (assignment_expression "puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8)" (identifier "puVar1") (= "=") (cast_expression "(ulong *)(lVar9 + (uVar8 >> 9) * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar9 + (uVar8 >> 9) * 8)" (( "(") (binary_expression "lVar9 + (uVar8 >> 9) * 8" (identifier "lVar9") (+ "+") (binary_expression "(uVar8 >> 9) * 8" (parenthesized_expression "(uVar8 >> 9)" (( "(") (binary_expression "uVar8 >> 9" (identifier "uVar8") (>> ">>") (number_literal "9")) () ")")) (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "*puVar1 = *puVar1 | uVar3;" (assignment_expression "*puVar1 = *puVar1 | uVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 | uVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (| "|") (identifier "uVar3"))) (; ";")) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);" (assignment_expression "lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(*(long *)(param_2 + 0x20) + 0x28)" (* "*") (cast_expression "(long *)(*(long *)(param_2 + 0x20) + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x20) + 0x28)" (( "(") (binary_expression "*(long *)(param_2 + 0x20) + 0x28" (pointer_expression "*(long *)(param_2 + 0x20)" (* "*") (cast_expression "(long *)(param_2 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "bVar2 = *(byte *)(lVar4 + 0x20);" (assignment_expression "bVar2 = *(byte *)(lVar4 + 0x20)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(lVar4 + 0x20)" (* "*") (cast_expression "(byte *)(lVar4 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((bVar2 & 1) == 0) {\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }" (if "if") (parenthesized_expression "((bVar2 & 1) == 0)" (( "(") (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        FUN_001e9890("../../gold/output.h",0xc5,"address");\n      }" ({ "{") (expression_statement "FUN_001e9890("../../gold/output.h",0xc5,"address");" (call_expression "FUN_001e9890("../../gold/output.h",0xc5,"address")" (identifier "FUN_001e9890") (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") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8);" (assignment_expression "lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8)" (identifier "lVar4") (= "=") (binary_expression "(uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -\n              *(long *)(lVar4 + 8)" (parenthesized_expression "(uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38)" (( "(") (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |\n               (uVar3 & 0xff0000) << 0x18" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18\n               | (uVar3 & 0xff00000000) >> 8" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18" (binary_expression "uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28" (binary_expression "uVar3 >> 0x38" (identifier "uVar3") (>> ">>") (number_literal "0x38")) (| "|") (binary_expression "(uVar3 & 0xff000000000000) >> 0x28" (parenthesized_expression "(uVar3 & 0xff000000000000)" (( "(") (binary_expression "uVar3 & 0xff000000000000" (identifier "uVar3") (& "&") (number_literal "0xff000000000000")) () ")")) (>> ">>") (number_literal "0x28"))) (| "|") (binary_expression "(uVar3 & 0xff0000000000) >> 0x18" (parenthesized_expression "(uVar3 & 0xff0000000000)" (( "(") (binary_expression "uVar3 & 0xff0000000000" (identifier "uVar3") (& "&") (number_literal "0xff0000000000")) () ")")) (>> ">>") (number_literal "0x18"))) (| "|") (binary_expression "(uVar3 & 0xff00000000) >> 8" (parenthesized_expression "(uVar3 & 0xff00000000)" (( "(") (binary_expression "uVar3 & 0xff00000000" (identifier "uVar3") (& "&") (number_literal "0xff00000000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff000000) << 8" (parenthesized_expression "(uVar3 & 0xff000000)" (( "(") (binary_expression "uVar3 & 0xff000000" (identifier "uVar3") (& "&") (number_literal "0xff000000")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff0000) << 0x18" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (<< "<<") (number_literal "0x18"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 0x28" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "0x28"))) (| "|") (binary_expression "uVar3 << 0x38" (identifier "uVar3") (<< "<<") (number_literal "0x38"))) () ")")) (- "-") (pointer_expression "*(long *)(lVar4 + 8)" (* "*") (cast_expression "(long *)(lVar4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (if_statement "if (lVar4 + 0x80000000U < 0x100000000) {\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }" (if "if") (parenthesized_expression "(lVar4 + 0x80000000U < 0x100000000)" (( "(") (binary_expression "lVar4 + 0x80000000U < 0x100000000" (binary_expression "lVar4 + 0x80000000U" (identifier "lVar4") (+ "+") (number_literal "0x80000000U")) (< "<") (number_literal "0x100000000")) () ")")) (compound_statement "{\n        *param_3 = lVar4 + -0x8000;\n        return (ulong)(bVar2 & 1);\n      }" ({ "{") (expression_statement "*param_3 = lVar4 + -0x8000;" (assignment_expression "*param_3 = lVar4 + -0x8000" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "lVar4 + -0x8000" (identifier "lVar4") (+ "+") (number_literal "-0x8000"))) (; ";")) (return_statement "return (ulong)(bVar2 & 1);" (return "return") (call_expression "(ulong)(bVar2 & 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool make_toc_relative(Powerpc_relobj<64,_true> * this,
   Target_powerpc<64,_true> * target, Address * value) */

bool __thiscall
anon_unknown.dwarf_2cac9f::Powerpc_relobj<64,var_15>::make_toc_relative
          (Powerpc_relobj<64,var_15> *this,var_19<64,var_15> *target,Address *value)

{
  byte var_21;
  type_1 var_1;
  type_1 var_11;
  type_2 puVar4;
  type_3 *var_12;
  type_3 *var_13;
  type_4 *pOVar7;
  type_5 var_8;
  type_6 *var_17;
  long var_22;
  type_7 var_7;
  type_8 vlen;
  
  var_1 = this->toc_;
  if (var_1 == 0) {
    return false;
  }
  puVar4 = (this->super_Sized_relobj_file<64,var_15>).super_Sized_relobj<64,var_15>.section_offsets_.
           super__Vector_base<var_3,_std::var_2<var_3>var_4>._M_impl.
           _M_start;
  if ((type_7)((long)(this->super_Sized_relobj_file<64,var_15>).super_Sized_relobj<64,var_15>.
                    section_offsets_.
                    super__Vector_base<var_3,_std::var_2<var_3>var_4>.
                    _M_impl._M_finish - (long)puVar4 >> 3) <= (type_7)var_1) {
                    /* WARNING: Subroutine does not return */
    gold::var_5("../../gold/object.h",0x7f7,"get_output_section_offset");
  }
  var_7 = (*value + 0x8000) - puVar4[var_1];
  var_8 = elfcpp::Elf_file<64,var_15,_gold::Object>::var_6
                    (&(this->super_Sized_relobj_file<64,var_15>).elf_file_,var_1);
  if (var_7 < var_8) {
    var_1 = (this->no_toc_opt_).super__Bvector_base<var_9::var_2<var_10>var_4>._M_impl.
            super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_offset;
    var_11 = (this->no_toc_opt_).super__Bvector_base<var_9::var_2<var_10>var_4>._M_impl.
            super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_offset;
    var_12 = (this->no_toc_opt_).super__Bvector_base<var_9::var_2<var_10>var_4>._M_impl.
             super__Bvector_impl_data._M_finish.super__Bit_iterator_base._M_p;
    var_13 = (this->no_toc_opt_).super__Bvector_base<var_9::var_2<var_10>var_4>._M_impl.
             super__Bvector_impl_data._M_start.super__Bit_iterator_base._M_p;
    if (((var_1 == var_11) && (var_12 == var_13)) ||
       ((var_7 >> 3 < ((type_7)var_1 + ((long)var_12 - (long)var_13) * 8) - (type_7)var_11 &&
        ((var_13[var_7 >> 9] & 1L << ((byte)(var_7 >> 3) & 0x3f)) == 0)))) {
      var_17 = gold::var_14<64,var_15>::var_16
                         (&this->super_Sized_relobj_file<64,var_15>,this->toc_,&vlen);
      var_7 = *(type_7 *)(var_17 + var_7);
      if (target->got_ == (var_18<64,var_15> *)0x0) {
                    /* WARNING: Subroutine does not return */
        var_19<64,var_15>::var_20((var_19<64,var_15> *)this);
      }
      pOVar7 = (target->got_->super_Output_data_got<64,var_15>).super_Output_data_got_base.
               super_Output_section_data_build.super_Output_section_data.output_section_;
      var_21 = (pOVar7->super_Output_data).field_0x20;
      if ((var_21 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        gold::var_5("../../gold/output.h",0xc5,"address");
      }
      var_22 = (var_7 >> 0x38 | (var_7 & 0xff000000000000) >> 0x28 |
                (var_7 & 0xff0000000000) >> 0x18 | (var_7 & 0xff00000000) >> 8 |
                (var_7 & 0xff000000) << 8 | (var_7 & 0xff0000) << 0x18 | (var_7 & 0xff00) << 0x28
               | var_7 << 0x38) - (pOVar7->super_Output_data).address_;
      if (var_22 + 0x80000000U < 0x100000000) {
        *value = var_22 - 0x8000;
        return (bool)(var_21 & 1);
      }
    }
  }
  return false;
}


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

ulong MASKED(long param_1,long param_2,long *param_3)

{
  ulong *puVar1;
  byte bVar2;
  ulong uVar3;
  long lVar4;
  ulong uVar5;
  uint uVar6;
  ulong uVar7;
  ulong uVar8;
  long lVar9;
  undefined4 uStack_54;
  undefined1 local_30 [16];
  
  uVar6 = *(uint *)(param_1 + 0x22c);
  if (uVar6 == 0) {
    return 0;
  }
  if ((ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 3) <= (ulong)uVar6) {
                    /* WARNING: Subroutine does not return */
    FUN_001e9890("../../gold/object.h",0x7f7,"get_output_section_offset");
  }
  uVar7 = (*param_3 + 0x8000) - *(long *)(*(long *)(param_1 + 0xe0) + (ulong)uVar6 * 8);
  uVar3 = FUN_001c4aa0(param_1 + 0xf8,uVar6);
  if (uVar7 < uVar3) {
    lVar4 = *(long *)(param_1 + 0x238);
    if (((*(uint *)(param_1 + 0x250) == *(uint *)(param_1 + 0x240)) &&
        (*(long *)(param_1 + 0x248) == lVar4)) ||
       ((uVar7 >> 3 <
         ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar4) * 8) -
         (ulong)*(uint *)(param_1 + 0x240) &&
        ((*(ulong *)(lVar4 + (uVar7 >> 9) * 8) & 1L << ((byte)(uVar7 >> 3) & 0x3f)) == 0)))) {
      uVar8 = (ulong)*(uint *)(param_1 + 0x22c);
      lVar4 = FUN_002ad0d0(param_1,uVar8,local_30);
      uVar3 = *(ulong *)(lVar4 + uVar7);
      if (*(long *)(param_2 + 0x20) == 0) {
        FUN_0016d960();
        uVar7 = (ulong)*(uint *)(param_1 + 0x250);
        uVar3 = (ulong)*(uint *)(param_1 + 0x240);
        lVar4 = *(long *)(param_1 + 0x248);
        lVar9 = *(long *)(param_1 + 0x238);
        if ((lVar4 == lVar9) && (*(uint *)(param_1 + 0x240) == *(uint *)(param_1 + 0x250))) {
          uVar5 = FUN_001c4aa0(param_1 + 0xf8,*(undefined4 *)(param_1 + 0x22c));
          lVar9 = *(long *)(param_1 + 0x238);
          uVar3 = (ulong)*(uint *)(param_1 + 0x240);
          uVar5 = uVar5 >> 3;
          uVar7 = ((ulong)*(uint *)(param_1 + 0x250) + (*(long *)(param_1 + 0x248) - lVar9) * 8) -
                  uVar3;
          if (uVar5 < uVar7) {
            uVar6 = (uint)(uVar5 + uVar3) & 0x3f;
            uVar7 = (ulong)uVar6;
            lVar4 = lVar9 + ((long)(uVar5 + uVar3) >> 6) * 8;
            *(long *)(param_1 + 0x248) = lVar4;
            *(uint *)(param_1 + 0x250) = uVar6;
          }
          else {
            FUN_001be8c0(param_1 + 0x238,*(long *)(param_1 + 0x248),
                         CONCAT44(uStack_54,*(uint *)(param_1 + 0x250)),uVar5 - uVar7,0);
            lVar9 = *(long *)(param_1 + 0x238);
            uVar7 = (ulong)*(uint *)(param_1 + 0x250);
            lVar4 = *(long *)(param_1 + 0x248);
            uVar3 = (ulong)*(uint *)(param_1 + 0x240);
          }
        }
        uVar3 = (uVar7 + (lVar4 - lVar9) * 8) - uVar3;
        if (uVar8 >> 3 < uVar3) {
          uVar3 = 1L << ((byte)(uVar8 >> 3) & 0x3f);
          puVar1 = (ulong *)(lVar9 + (uVar8 >> 9) * 8);
          *puVar1 = *puVar1 | uVar3;
        }
        return uVar3;
      }
      lVar4 = *(long *)(*(long *)(param_2 + 0x20) + 0x28);
      bVar2 = *(byte *)(lVar4 + 0x20);
      if ((bVar2 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
        FUN_001e9890("../../gold/output.h",0xc5,"address");
      }
      lVar4 = (uVar3 >> 0x38 | (uVar3 & 0xff000000000000) >> 0x28 | (uVar3 & 0xff0000000000) >> 0x18
               | (uVar3 & 0xff00000000) >> 8 | (uVar3 & 0xff000000) << 8 |
               (uVar3 & 0xff0000) << 0x18 | (uVar3 & 0xff00) << 0x28 | uVar3 << 0x38) -
              *(long *)(lVar4 + 8);
      if (lVar4 + 0x80000000U < 0x100000000) {
        *param_3 = lVar4 + -0x8000;
        return (ulong)(bVar2 & 1);
      }
    }
  }
  return 0;
}

