
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: uint do_get_reloc_target(Sized_elf_reloc_mapper<32,_false> * this,
   off_t reloc_offset, off_t * target_offset) */

uint __thiscall
gold::Sized_elf_reloc_mapper<32,_false>::do_get_reloc_target
          (Sized_elf_reloc_mapper<32,_false> *this,off_t reloc_offset,off_t *target_offset)

{
  ushort uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int extraout_v1;
  int *piVar5;
  Xindex *pXVar6;
  undefined *puVar7;
  Object *pOVar8;
  int *piVar9;
  undefined4 in_a2;
  undefined *puVar10;
  int iVar11;
  int iVar12;
  undefined4 in_a3;
  int iVar13;
  int *piVar14;
  Track_relocs<32,_false> *pTVar15;
  undefined *puVar16;
  uint uVar17;
  undefined *puVar18;
  code *pcVar19;
  code *pcVar20;
  longlong lVar21;
  longlong lVar22;
  undefined1 auStack_c8 [68];
  undefined *puStack_84;
  undefined *puStack_80;
  undefined *puStack_7c;
  code *pcStack_74;
  undefined *puStack_60;
  int *piStack_58;
  int iStack_54;
  Track_relocs<32,_false> *pTStack_50;
  Sized_elf_reloc_mapper<32,_false> *pSStack_4c;
  
  lVar22 = CONCAT44(in_a2,in_a3);
  pTVar15 = &this->track_relocs_;
  (*(code *)PTR_advance_004c2a14)(pTVar15);
  lVar21 = (*(code *)PTR_next_offset_004c2a18)(pTVar15);
  if (lVar21 != lVar22) {
    return 0;
  }
  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(pTVar15);
  uVar3 = (iVar2 + 1) * 0x10;
  if ((-1 < *(int *)&this->symtab_size_) &&
     ((*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_)))) {
    uVar1 = *(ushort *)(this->symtab_ + (uVar3 - 2));
    uVar17 = *(uint *)(this->symtab_ + (uVar3 - 0xc));
    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);
    if (0xfeff < uVar3) {
      if (uVar3 != 0xffff) {
        return 0;
      }
      pOVar8 = this->object_;
      pXVar6 = pOVar8->xindex_;
      if (pXVar6 == (Xindex *)0x0) {
        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);
        pOVar8->xindex_ = pXVar6;
      }
      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2);
    }
    iVar2 = (((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10) +
            ((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000;
    if (this->reloc_type_ == 4) {
      (*(code *)PTR_next_addend_004c2a40)(pTVar15);
      iVar2 = iVar2 + extraout_v1;
    }
    reloc_offset._0_4_[1] = iVar2;
    *reloc_offset._0_4_ = 0;
    return uVar3;
  }
  puVar10 = PTR_s_in_a_linker_script_004c191c + 0x746c;
  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x7090;
  puVar18 = PTR_do_gold_unreachable_004c1a30;
  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar7,0x3d);
  puStack_60 = puVar18 + 0x1e29bc;
  puVar16 = puVar7 + 0x1c;
  pTStack_50 = pTVar15;
  pSStack_4c = this;
  (**(code **)(puVar18 + 0x1dc184))(puVar16);
  lVar22 = (**(code **)(puStack_60 + -0x6834))(puVar16);
  if (lVar22 != CONCAT44(puVar10,in_a3)) {
    return 0;
  }
  iVar2 = (**(code **)(puStack_60 + -0x67fc))(puVar16);
  uVar3 = (iVar2 + 1) * 0x18;
  if ((-1 < *(int *)(puVar7 + 0x10)) &&
     ((*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14))))) {
    iVar4 = *(int *)(puVar7 + 8) + (uVar3 - 0x18);
    uVar3 = (uint)*(ushort *)(iVar4 + 6);
    lVar22 = *(longlong *)(iVar4 + 8);
    if (0xfeff < uVar3) {
      if (uVar3 != 0xffff) {
        return 0;
      }
      piVar9 = *(int **)(puVar7 + 4);
      iVar4 = piVar9[0xc];
      if (iVar4 == 0) {
        piStack_58 = piVar9;
        iStack_54 = iVar2;
        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);
        piStack_58[0xc] = iVar4;
        piVar9 = piStack_58;
        iVar2 = iStack_54;
      }
      uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2);
    }
    if (*(int *)(puVar7 + 0x18) == 4) {
      lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16);
      lVar22 = lVar21 + lVar22;
    }
    Position_dependent_options::default_options_.relax_.user_set_via_option =
         (bool)(char)((ulonglong)lVar22 >> 0x38);
    Position_dependent_options::default_options_.relax_.value =
         (bool)(char)((ulonglong)lVar22 >> 0x30);
    Position_dependent_options::default_options_.relax_._62_2_ = (short)((ulonglong)lVar22 >> 0x20);
    Position_dependent_options::default_options_.no_relax_initializer_.super_Struct_var.
    _vptr_Struct_var = (_func_int_varargs **)(int)lVar22;
    return uVar3;
  }
  iVar4 = 0x3d;
  pcVar19 = *(code **)(puStack_60 + -0x7810);
  iVar11 = *(int *)(puStack_60 + -0x7924) + 0x747c;
  pcVar20 = Sized_dwarf_line_info<32,_false>::format_file_lineno;
  piVar9 = (int *)(*(int *)(puStack_60 + -0x7924) + 0x7090);
  (*pcVar19)();
  *(undefined1 *)(piVar9 + 2) = 0;
  iVar13 = *(int *)(iVar4 + 0x70);
  iVar2 = *(int *)(iVar4 + 0x74);
  piVar9[1] = 0;
  iVar12 = *(int *)(iVar11 + 8);
  *piVar9 = (int)(piVar9 + 2);
  puStack_84 = puVar16;
  puStack_80 = puVar7;
  puStack_7c = puVar10;
  pcStack_74 = pcVar20;
  if (iVar12 < (iVar2 - iVar13 >> 2) * -0x55555555) {
    uVar3 = *(uint *)(iVar11 + 0xc) >> 1;
    piVar14 = (int *)(iVar13 + iVar12 * 0xc);
    iVar2 = *piVar14;
    if (uVar3 < (uint)((piVar14[1] - iVar2 >> 2) * -0x49249249)) {
      piVar14 = (int *)(iVar2 + uVar3 * 0x1c);
      if (iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555) {
        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);
        iVar2 = *piVar5;
        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {
          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {
            (**(code **)(pcVar19 + 0x1db410))();
            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;
            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);
          }
          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);
          if (piVar9[1] == 0) {
            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);
          }
          (**(code **)(pcVar19 + 0x1df03c))
                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,
                     *(undefined4 *)(iVar11 + 0x10));
          if (piVar9[1] != 0x7fffffff) {
            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);
            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);
            if (uVar3 <= 0x7fffffffU - piVar9[1]) {
              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);
              return (uint)piVar9;
            }
            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);
          }
          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);
        }
        (**(code **)(pcVar19 + 0x1dafd8))
                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c
                  );
      }
      (**(code **)(pcVar19 + 0x1dafd8))
                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c);
    }
    (**(code **)(pcVar19 + 0x1dafd8))
              (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e3,*(int *)(pcVar19 + 0x1daec4) + 0x739c);
  }
  (**(code **)(pcVar19 + 0x1dafd8))
            (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e1,*(int *)(pcVar19 + 0x1daec4) + 0x739c);
LAB_002e6d28:
  iVar2 = *(int *)(pcVar19 + 0x1da824) + 0x446c;
  (**(code **)(pcVar19 + 0x1db41c))();
  if (piVar9 + 2 != (int *)*piVar9) {
    (**(code **)(pcVar19 + 0x1da8a4))((int *)*piVar9);
  }
  (**(code **)(pcVar19 + 0x1da870))();
  return (uint)(*(int *)(iVar2 + 0x5c) != 0);
}



uint FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 *param_5)

{
  ushort uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int extraout_v1;
  undefined *puVar5;
  int *piVar6;
  undefined *puVar7;
  int iVar8;
  undefined *puVar9;
  uint uVar10;
  undefined *puVar11;
  longlong lVar12;
  longlong lVar13;
  
  lVar13 = CONCAT44(param_3,param_4);
  iVar8 = param_1 + 0x1c;
  (*(code *)PTR_advance_004c2a14)(iVar8);
  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);
  if (lVar12 != lVar13) {
    return 0;
  }
  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);
  uVar3 = (iVar2 + 1) * 0x10;
  if ((-1 < *(int *)(param_1 + 0x10)) &&
     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {
    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);
    uVar1 = *(ushort *)(iVar4 + 0xe);
    uVar10 = *(uint *)(iVar4 + 4);
    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);
    if (0xfeff < uVar3) {
      if (uVar3 != 0xffff) {
        return 0;
      }
      piVar6 = *(int **)(param_1 + 4);
      iVar4 = piVar6[0xc];
      if (iVar4 == 0) {
        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);
        piVar6[0xc] = iVar4;
      }
      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);
    }
    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +
            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;
    if (*(int *)(param_1 + 0x18) == 4) {
      (*(code *)PTR_next_addend_004c2a40)(iVar8);
      iVar2 = iVar2 + extraout_v1;
    }
    param_5[1] = iVar2;
    *param_5 = 0;
    return uVar3;
  }
  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;
  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;
  puVar11 = PTR_do_gold_unreachable_004c1a30;
  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);
  puVar9 = puVar5 + 0x1c;
  (**(code **)(puVar11 + 0x1dc184))(puVar9);
  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);
  if (lVar13 != CONCAT44(puVar7,param_4)) {
    return 0;
  }
  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);
  uVar3 = (iVar8 + 1) * 0x18;
  if ((-1 < *(int *)(puVar5 + 0x10)) &&
     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {
    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);
    uVar3 = (uint)*(ushort *)(iVar2 + 6);
    lVar13 = *(longlong *)(iVar2 + 8);
    if (0xfeff < uVar3) {
      if (uVar3 != 0xffff) {
        return 0;
      }
      piVar6 = *(int **)(puVar5 + 4);
      iVar2 = piVar6[0xc];
      if (iVar2 == 0) {
        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);
        piVar6[0xc] = iVar2;
      }
      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);
    }
    if (*(int *)(puVar5 + 0x18) == 4) {
      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);
      lVar13 = lVar12 + lVar13;
    }
    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;
    return uVar3;
  }
  uVar3 = (**(code **)(puVar11 + 0x1db1ac))
                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,
                     *(int *)(puVar11 + 0x1db098) + 0x747c);
  return uVar3;
}


lui gp,0x1e
addiu gp,gp,0x2b7c
addu gp,gp,t9
addiu sp,sp,-0x38
lw t9,-0x682c(gp)
sw s0,0x24(sp)
addiu s0,a0,0x1c
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s3,0x30(sp)
or s3,a3,zero
sw s2,0x2c(sp)
or s2,a2,zero
sw s1,0x28(sp)
or s1,a0,zero
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
lw t9,-0x6828(gp)
jalr t9
_or a0,s0,zero
beq s2,v0,0x002e6744
_lw gp,0x10(sp)
lw ra,0x34(sp)
or s2,zero,zero
lw s3,0x30(sp)
or v0,s2,zero
lw s1,0x28(sp)
lw s2,0x2c(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x38
bne s3,v1,0x002e6724
_lw ra,0x34(sp)
lw t9,-0x6804(gp)
jalr t9
_or a0,s0,zero
lw v1,0x10(s1)
or a2,v0,zero
addiu v0,v0,0x1
lw gp,0x10(sp)
bltz v1,0x002e6868
_sll v0,v0,0x4
beq v1,zero,0x002e6858
_nop
lw v1,0x8(s1)
addiu v0,v0,-0x10
addu v1,v1,v0
lhu v0,0xe(v1)
lw s3,0x4(v1)
ori v1,zero,0xff00
wsbh v0,v0
andi v0,v0,0xffff
sltu v1,v0,v1
bne v1,zero,0x002e67d4
_or s2,v0,zero
ori v1,zero,0xffff
bne v0,v1,0x002e6724
_lw ra,0x34(sp)
lw a1,0x4(s1)
lw a0,0x30(a1)
beq a0,zero,0x002e6828
_nop
lw t9,-0x7790(gp)
jalr t9
_nop
lw gp,0x10(sp)
or s2,v0,zero
lw v1,0x18(s1)
wsbh s3,s3
li v0,0x4
beq v1,v0,0x002e6814
_rotr s3,s3,0x10
lw v0,0x48(sp)
lw ra,0x34(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
sw s3,0x4(v0)
sw zero,0x0(v0)
or v0,s2,zero
lw s3,0x30(sp)
lw s2,0x2c(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x6800(gp)
jalr t9
_or a0,s0,zero
b 0x002e67e8
_addu s3,s3,v1
lw v0,0x0(a1)
sw a2,0x1c(sp)
sw a1,0x18(sp)
lw t9,0x6c(v0)
jalr t9
_or a0,a1,zero
lw a1,0x18(sp)
or a0,v0,zero
lw gp,0x10(sp)
lw a2,0x1c(sp)
b 0x002e67c0
_sw v0,0x30(a1)
lw v1,0x14(s1)
sltu v1,v1,v0
beq v1,zero,0x002e6778
_nop
lw a2,-0x7924(gp)
li a1,0x3d
lw a0,-0x7924(gp)
lw t9,-0x7810(gp)
addiu a2,a2,0x746c
jalr t9
_addiu a0,a0,0x7090
(translation_unit "uint FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)\n\n{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}\n\n" (function_definition "uint FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)\n\n{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}" type_identifier (function_declarator "FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "longlong lVar12;" type_identifier identifier ;) (declaration "longlong lVar13;" type_identifier identifier ;) (expression_statement "lVar13 = CONCAT44(param_3,param_4);" (assignment_expression "lVar13 = CONCAT44(param_3,param_4)" identifier = (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = param_1 + 0x1c;" (assignment_expression "iVar8 = param_1 + 0x1c" identifier = (binary_expression "param_1 + 0x1c" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_advance_004c2a14)(iVar8);" (call_expression "(*(code *)PTR_advance_004c2a14)(iVar8)" (parenthesized_expression "(*(code *)PTR_advance_004c2a14)" ( (pointer_expression "*(code *)PTR_advance_004c2a14" * (cast_expression "(code *)PTR_advance_004c2a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);" (assignment_expression "lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8)" identifier = (call_expression "(*(code *)PTR_next_offset_004c2a18)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_offset_004c2a18)" ( (pointer_expression "*(code *)PTR_next_offset_004c2a18" * (cast_expression "(code *)PTR_next_offset_004c2a18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (if_statement "if (lVar12 != lVar13) {\n    return 0;\n  }" if (parenthesized_expression "(lVar12 != lVar13)" ( (binary_expression "lVar12 != lVar13" identifier != identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);" (assignment_expression "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8)" identifier = (call_expression "(*(code *)PTR_next_symndx_004c2a3c)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_symndx_004c2a3c)" ( (pointer_expression "*(code *)PTR_next_symndx_004c2a3c" * (cast_expression "(code *)PTR_next_symndx_004c2a3c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = (iVar2 + 1) * 0x10;" (assignment_expression "uVar3 = (iVar2 + 1) * 0x10" identifier = (binary_expression "(iVar2 + 1) * 0x10" (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }" if (parenthesized_expression "((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14)))))" ( (binary_expression "(-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))" (parenthesized_expression "(-1 < *(int *)(param_1 + 0x10))" ( (binary_expression "-1 < *(int *)(param_1 + 0x10)" number_literal < (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) && (parenthesized_expression "((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))" ( (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14)))" ( (binary_expression "*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))" (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(uVar3 <= *(uint *)(param_1 + 0x14))" ( (binary_expression "uVar3 <= *(uint *)(param_1 + 0x14)" identifier <= (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }" { (expression_statement "iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10)" identifier = (binary_expression "*(int *)(param_1 + 8) + (uVar3 - 0x10)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (parenthesized_expression "(uVar3 - 0x10)" ( (binary_expression "uVar3 - 0x10" identifier - number_literal) )))) ;) (expression_statement "uVar1 = *(ushort *)(iVar4 + 0xe);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0xe)" identifier = (pointer_expression "*(ushort *)(iVar4 + 0xe)" * (cast_expression "(ushort *)(iVar4 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xe)" ( (binary_expression "iVar4 + 0xe" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(iVar4 + 4);" (assignment_expression "uVar10 = *(uint *)(iVar4 + 4)" identifier = (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);" (assignment_expression "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" identifier = (binary_expression "(uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" (binary_expression "(uVar1 & 0xff) << 8" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) << number_literal) | (call_expression "(uint)(uVar1 >> 8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) ))))) ;) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }" if (parenthesized_expression "(0xfeff < uVar3)" ( (binary_expression "0xfeff < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }" { (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 != 0xffff)" ( (binary_expression "uVar3 != 0xffff" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar6 = *(int **)(param_1 + 4);" (assignment_expression "piVar6 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = piVar6[0xc];" (assignment_expression "iVar4 = piVar6[0xc]" identifier = (subscript_expression "piVar6[0xc]" identifier [ number_literal ])) ;) (if_statement "if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }" { (expression_statement "iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);" (assignment_expression "iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6)" identifier = (call_expression "(**(code **)(*piVar6 + 0x6c))(piVar6)" (parenthesized_expression "(**(code **)(*piVar6 + 0x6c))" ( (pointer_expression "**(code **)(*piVar6 + 0x6c)" * (pointer_expression "*(code **)(*piVar6 + 0x6c)" * (cast_expression "(code **)(*piVar6 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar6 + 0x6c)" ( (binary_expression "*piVar6 + 0x6c" (pointer_expression "*piVar6" * identifier) + number_literal) ))))) )) (argument_list "(piVar6)" ( identifier )))) ;) (expression_statement "piVar6[0xc] = iVar4;" (assignment_expression "piVar6[0xc] = iVar4" (subscript_expression "piVar6[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);" (assignment_expression "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2)" identifier = (call_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2)" (parenthesized_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)" ( (pointer_expression "*(code *)PTR_sym_xindex_to_shndx_004c1ab0" * (cast_expression "(code *)PTR_sym_xindex_to_shndx_004c1ab0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4,piVar6,iVar2)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;" (assignment_expression "iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" identifier = (binary_expression "(((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10)" ( (binary_expression "(uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10" (binary_expression "(uVar10 >> 0x10) << 0x18" (parenthesized_expression "(uVar10 >> 0x10)" ( (binary_expression "uVar10 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar10 >> 0x18) << 0x10" (parenthesized_expression "(uVar10 >> 0x18)" ( (binary_expression "uVar10 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff)" ( (binary_expression "(uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff" (binary_expression "(uVar10 & 0xff) << 8" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar10 >> 8 & 0xff" (binary_expression "uVar10 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal))) ;) (if_statement "if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) == 4)" ( (binary_expression "*(int *)(param_1 + 0x18) == 4" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }" { (expression_statement "(*(code *)PTR_next_addend_004c2a40)(iVar8);" (call_expression "(*(code *)PTR_next_addend_004c2a40)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_addend_004c2a40)" ( (pointer_expression "*(code *)PTR_next_addend_004c2a40" * (cast_expression "(code *)PTR_next_addend_004c2a40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "iVar2 = iVar2 + extraout_v1;" (assignment_expression "iVar2 = iVar2 + extraout_v1" identifier = (binary_expression "iVar2 + extraout_v1" identifier + identifier)) ;) })) (expression_statement "param_5[1] = iVar2;" (assignment_expression "param_5[1] = iVar2" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;" (assignment_expression "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x746c" identifier + number_literal)) ;) (expression_statement "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;" (assignment_expression "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7090" identifier + number_literal)) ;) (expression_statement "puVar11 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar11 = PTR_do_gold_unreachable_004c1a30" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,0x3d)" ( identifier , number_literal ))) ;) (expression_statement "puVar9 = puVar5 + 0x1c;" (assignment_expression "puVar9 = puVar5 + 0x1c" identifier = (binary_expression "puVar5 + 0x1c" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar11 + 0x1dc184))(puVar9);" (call_expression "(**(code **)(puVar11 + 0x1dc184))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc184))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc184)" * (pointer_expression "*(code **)(puVar11 + 0x1dc184)" * (cast_expression "(code **)(puVar11 + 0x1dc184)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc184)" ( (binary_expression "puVar11 + 0x1dc184" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);" (assignment_expression "lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9)" identifier = (call_expression "(**(code **)(puVar11 + 0x1dc188))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc188))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc188)" * (pointer_expression "*(code **)(puVar11 + 0x1dc188)" * (cast_expression "(code **)(puVar11 + 0x1dc188)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc188)" ( (binary_expression "puVar11 + 0x1dc188" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier )))) ;) (if_statement "if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }" if (parenthesized_expression "(lVar13 != CONCAT44(puVar7,param_4))" ( (binary_expression "lVar13 != CONCAT44(puVar7,param_4)" identifier != (call_expression "CONCAT44(puVar7,param_4)" identifier (argument_list "(puVar7,param_4)" ( identifier , identifier )))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);" (assignment_expression "iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9)" identifier = (call_expression "(**(code **)(puVar11 + 0x1dc1c0))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc1c0))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc1c0)" * (pointer_expression "*(code **)(puVar11 + 0x1dc1c0)" * (cast_expression "(code **)(puVar11 + 0x1dc1c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc1c0)" ( (binary_expression "puVar11 + 0x1dc1c0" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "uVar3 = (iVar8 + 1) * 0x18;" (assignment_expression "uVar3 = (iVar8 + 1) * 0x18" identifier = (binary_expression "(iVar8 + 1) * 0x18" (parenthesized_expression "(iVar8 + 1)" ( (binary_expression "iVar8 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }" if (parenthesized_expression "((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14)))))" ( (binary_expression "(-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))" (parenthesized_expression "(-1 < *(int *)(puVar5 + 0x10))" ( (binary_expression "-1 < *(int *)(puVar5 + 0x10)" number_literal < (pointer_expression "*(int *)(puVar5 + 0x10)" * (cast_expression "(int *)(puVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x10)" ( (binary_expression "puVar5 + 0x10" identifier + number_literal) ))))) )) && (parenthesized_expression "((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))" ( (parenthesized_expression "(*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14)))" ( (binary_expression "*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))" (binary_expression "*(int *)(puVar5 + 0x10) != 0" (pointer_expression "*(int *)(puVar5 + 0x10)" * (cast_expression "(int *)(puVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x10)" ( (binary_expression "puVar5 + 0x10" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(uVar3 <= *(uint *)(puVar5 + 0x14))" ( (binary_expression "uVar3 <= *(uint *)(puVar5 + 0x14)" identifier <= (pointer_expression "*(uint *)(puVar5 + 0x14)" * (cast_expression "(uint *)(puVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x14)" ( (binary_expression "puVar5 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }" { (expression_statement "iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);" (assignment_expression "iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18)" identifier = (binary_expression "*(int *)(puVar5 + 8) + (uVar3 - 0x18)" (pointer_expression "*(int *)(puVar5 + 8)" * (cast_expression "(int *)(puVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 8)" ( (binary_expression "puVar5 + 8" identifier + number_literal) )))) + (parenthesized_expression "(uVar3 - 0x18)" ( (binary_expression "uVar3 - 0x18" identifier - number_literal) )))) ;) (expression_statement "uVar3 = (uint)*(ushort *)(iVar2 + 6);" (assignment_expression "uVar3 = (uint)*(ushort *)(iVar2 + 6)" identifier = (binary_expression "(uint)*(ushort *)(iVar2 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 6)" ( (binary_expression "iVar2 + 6" identifier + number_literal) ))))) ;) (expression_statement "lVar13 = *(longlong *)(iVar2 + 8);" (assignment_expression "lVar13 = *(longlong *)(iVar2 + 8)" identifier = (pointer_expression "*(longlong *)(iVar2 + 8)" * (cast_expression "(longlong *)(iVar2 + 8)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }" if (parenthesized_expression "(0xfeff < uVar3)" ( (binary_expression "0xfeff < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }" { (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 != 0xffff)" ( (binary_expression "uVar3 != 0xffff" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar6 = *(int **)(puVar5 + 4);" (assignment_expression "piVar6 = *(int **)(puVar5 + 4)" identifier = (pointer_expression "*(int **)(puVar5 + 4)" * (cast_expression "(int **)(puVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = piVar6[0xc];" (assignment_expression "iVar2 = piVar6[0xc]" identifier = (subscript_expression "piVar6[0xc]" identifier [ number_literal ])) ;) (if_statement "if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }" { (expression_statement "iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);" (assignment_expression "iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6)" identifier = (call_expression "(**(code **)(*piVar6 + 0x6c))(piVar6)" (parenthesized_expression "(**(code **)(*piVar6 + 0x6c))" ( (pointer_expression "**(code **)(*piVar6 + 0x6c)" * (pointer_expression "*(code **)(*piVar6 + 0x6c)" * (cast_expression "(code **)(*piVar6 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar6 + 0x6c)" ( (binary_expression "*piVar6 + 0x6c" (pointer_expression "*piVar6" * identifier) + number_literal) ))))) )) (argument_list "(piVar6)" ( identifier )))) ;) (expression_statement "piVar6[0xc] = iVar2;" (assignment_expression "piVar6[0xc] = iVar2" (subscript_expression "piVar6[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);" (assignment_expression "uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8)" identifier = (call_expression "(**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8)" (parenthesized_expression "(**(code **)(puVar11 + 0x1db22c))" ( (pointer_expression "**(code **)(puVar11 + 0x1db22c)" * (pointer_expression "*(code **)(puVar11 + 0x1db22c)" * (cast_expression "(code **)(puVar11 + 0x1db22c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1db22c)" ( (binary_expression "puVar11 + 0x1db22c" identifier + number_literal) ))))) )) (argument_list "(iVar2,piVar6,iVar8)" ( identifier , identifier , identifier )))) ;) })) (if_statement "if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }" if (parenthesized_expression "(*(int *)(puVar5 + 0x18) == 4)" ( (binary_expression "*(int *)(puVar5 + 0x18) == 4" (pointer_expression "*(int *)(puVar5 + 0x18)" * (cast_expression "(int *)(puVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x18)" ( (binary_expression "puVar5 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }" { (expression_statement "lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);" (assignment_expression "lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9)" identifier = (call_expression "(**(code **)(puVar11 + 0x1dc1c4))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc1c4))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc1c4)" * (pointer_expression "*(code **)(puVar11 + 0x1dc1c4)" * (cast_expression "(code **)(puVar11 + 0x1dc1c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc1c4)" ( (binary_expression "puVar11 + 0x1dc1c4" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "lVar13 = lVar12 + lVar13;" (assignment_expression "lVar13 = lVar12 + lVar13" identifier = (binary_expression "lVar12 + lVar13" identifier + identifier)) ;) })) (labeled_statement "gold::Position_dependent_options::default_options_._12816_8_ = lVar13;" statement_identifier : (ERROR ":" :) (labeled_statement "Position_dependent_options::default_options_._12816_8_ = lVar13;" statement_identifier : (ERROR ":" :) (expression_statement "default_options_._12816_8_ = lVar13;" (assignment_expression "default_options_._12816_8_ = lVar13" (field_expression "default_options_._12816_8_" identifier . field_identifier) = identifier) ;))) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);" (assignment_expression "uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" identifier = (call_expression "(**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" (parenthesized_expression "(**(code **)(puVar11 + 0x1db1ac))" ( (pointer_expression "**(code **)(puVar11 + 0x1db1ac)" * (pointer_expression "*(code **)(puVar11 + 0x1db1ac)" * (cast_expression "(code **)(puVar11 + 0x1db1ac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1db1ac)" ( (binary_expression "puVar11 + 0x1db1ac" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" ( (binary_expression "*(int *)(puVar11 + 0x1db098) + 0x7090" (pointer_expression "*(int *)(puVar11 + 0x1db098)" * (cast_expression "(int *)(puVar11 + 0x1db098)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x1db098)" ( (binary_expression "puVar11 + 0x1db098" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar11 + 0x1db098) + 0x747c" (pointer_expression "*(int *)(puVar11 + 0x1db098)" * (cast_expression "(int *)(puVar11 + 0x1db098)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x1db098)" ( (binary_expression "puVar11 + 0x1db098" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: uint do_get_reloc_target(Sized_elf_reloc_mapper<32,_false> * this,\n   off_t reloc_offset, off_t * target_offset) */\n\nuint __thiscall\ngold::Sized_elf_reloc_mapper<32,_false>::do_get_reloc_target\n          (Sized_elf_reloc_mapper<32,_false> *this,off_t reloc_offset,off_t *target_offset)\n\n{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  int *piVar5;\n  Xindex *pXVar6;\n  undefined *puVar7;\n  Object *pOVar8;\n  int *piVar9;\n  undefined4 in_a2;\n  undefined *puVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 in_a3;\n  int iVar13;\n  int *piVar14;\n  Track_relocs<32,_false> *pTVar15;\n  undefined *puVar16;\n  uint uVar17;\n  undefined *puVar18;\n  code *pcVar19;\n  code *pcVar20;\n  longlong lVar21;\n  longlong lVar22;\n  undefined1 auStack_c8 [68];\n  undefined *puStack_84;\n  undefined *puStack_80;\n  undefined *puStack_7c;\n  code *pcStack_74;\n  undefined *puStack_60;\n  int *piStack_58;\n  int iStack_54;\n  Track_relocs<32,_false> *pTStack_50;\n  Sized_elf_reloc_mapper<32,_false> *pSStack_4c;\n  \n  lVar22 = CONCAT44(in_a2,in_a3);\n  pTVar15 = &this->track_relocs_;\n  (*(code *)PTR_advance_004c2a14)(pTVar15);\n  lVar21 = (*(code *)PTR_next_offset_004c2a18)(pTVar15);\n  if (lVar21 != lVar22) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(pTVar15);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)&this->symtab_size_) &&\n     ((*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_)))) {\n    uVar1 = *(ushort *)(this->symtab_ + (uVar3 - 2));\n    uVar17 = *(uint *)(this->symtab_ + (uVar3 - 0xc));\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      pOVar8 = this->object_;\n      pXVar6 = pOVar8->xindex_;\n      if (pXVar6 == (Xindex *)0x0) {\n        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);\n        pOVar8->xindex_ = pXVar6;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2);\n    }\n    iVar2 = (((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000;\n    if (this->reloc_type_ == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(pTVar15);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    reloc_offset._0_4_[1] = iVar2;\n    *reloc_offset._0_4_ = 0;\n    return uVar3;\n  }\n  puVar10 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar18 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar7,0x3d);\n  puStack_60 = puVar18 + 0x1e29bc;\n  puVar16 = puVar7 + 0x1c;\n  pTStack_50 = pTVar15;\n  pSStack_4c = this;\n  (**(code **)(puVar18 + 0x1dc184))(puVar16);\n  lVar22 = (**(code **)(puStack_60 + -0x6834))(puVar16);\n  if (lVar22 != CONCAT44(puVar10,in_a3)) {\n    return 0;\n  }\n  iVar2 = (**(code **)(puStack_60 + -0x67fc))(puVar16);\n  uVar3 = (iVar2 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar7 + 0x10)) &&\n     ((*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14))))) {\n    iVar4 = *(int *)(puVar7 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar4 + 6);\n    lVar22 = *(longlong *)(iVar4 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar9 = *(int **)(puVar7 + 4);\n      iVar4 = piVar9[0xc];\n      if (iVar4 == 0) {\n        piStack_58 = piVar9;\n        iStack_54 = iVar2;\n        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);\n        piStack_58[0xc] = iVar4;\n        piVar9 = piStack_58;\n        iVar2 = iStack_54;\n      }\n      uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2);\n    }\n    if (*(int *)(puVar7 + 0x18) == 4) {\n      lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16);\n      lVar22 = lVar21 + lVar22;\n    }\n    Position_dependent_options::default_options_.relax_.user_set_via_option =\n         (bool)(char)((ulonglong)lVar22 >> 0x38);\n    Position_dependent_options::default_options_.relax_.value =\n         (bool)(char)((ulonglong)lVar22 >> 0x30);\n    Position_dependent_options::default_options_.relax_._62_2_ = (short)((ulonglong)lVar22 >> 0x20);\n    Position_dependent_options::default_options_.no_relax_initializer_.super_Struct_var.\n    _vptr_Struct_var = (_func_int_varargs **)(int)lVar22;\n    return uVar3;\n  }\n  iVar4 = 0x3d;\n  pcVar19 = *(code **)(puStack_60 + -0x7810);\n  iVar11 = *(int *)(puStack_60 + -0x7924) + 0x747c;\n  pcVar20 = Sized_dwarf_line_info<32,_false>::format_file_lineno;\n  piVar9 = (int *)(*(int *)(puStack_60 + -0x7924) + 0x7090);\n  (*pcVar19)();\n  *(undefined1 *)(piVar9 + 2) = 0;\n  iVar13 = *(int *)(iVar4 + 0x70);\n  iVar2 = *(int *)(iVar4 + 0x74);\n  piVar9[1] = 0;\n  iVar12 = *(int *)(iVar11 + 8);\n  *piVar9 = (int)(piVar9 + 2);\n  puStack_84 = puVar16;\n  puStack_80 = puVar7;\n  puStack_7c = puVar10;\n  pcStack_74 = pcVar20;\n  if (iVar12 < (iVar2 - iVar13 >> 2) * -0x55555555) {\n    uVar3 = *(uint *)(iVar11 + 0xc) >> 1;\n    piVar14 = (int *)(iVar13 + iVar12 * 0xc);\n    iVar2 = *piVar14;\n    if (uVar3 < (uint)((piVar14[1] - iVar2 >> 2) * -0x49249249)) {\n      piVar14 = (int *)(iVar2 + uVar3 * 0x1c);\n      if (iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555) {\n        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);\n        iVar2 = *piVar5;\n        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }\n        (**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );\n      }\n      (**(code **)(pcVar19 + 0x1dafd8))\n                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n    }\n    (**(code **)(pcVar19 + 0x1dafd8))\n              (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e3,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n  }\n  (**(code **)(pcVar19 + 0x1dafd8))\n            (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e1,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\nLAB_002e6d28:\n  iVar2 = *(int *)(pcVar19 + 0x1da824) + 0x446c;\n  (**(code **)(pcVar19 + 0x1db41c))();\n  if (piVar9 + 2 != (int *)*piVar9) {\n    (**(code **)(pcVar19 + 0x1da8a4))((int *)*piVar9);\n  }\n  (**(code **)(pcVar19 + 0x1da870))();\n  return (uint)(*(int *)(iVar2 + 0x5c) != 0);\n}\n\n" comment comment comment comment comment comment comment (declaration "uint __thiscall\ngold::Sized_elf_reloc_mapper<32,_false>::do_get_reloc_target\n          (Sized_elf_reloc_mapper<32,_false> *this,off_t reloc_offset,off_t *target_offset)\n\n{\n  ushort uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::do_get_reloc_target\n          (Sized_elf_reloc_mapper<32,_false> *this,off_t reloc_offset,off_t *target_offset)\n\n{\n  ushort" identifier > : : (function_declarator "do_get_reloc_target\n          (Sized_elf_reloc_mapper<32,_false> *this,off_t reloc_offset,off_t *target_offset)" identifier (parameter_list "(Sized_elf_reloc_mapper<32,_false> *this,off_t reloc_offset,off_t *target_offset)" ( (parameter_declaration "Sized_elf_reloc_mapper" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t reloc_offset" type_identifier identifier) , (parameter_declaration "off_t *target_offset" type_identifier (pointer_declarator "*target_offset" * identifier)) ))) { identifier) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "Xindex *pXVar6;" type_identifier (pointer_declarator "*pXVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "Object *pOVar8;" type_identifier (pointer_declarator "*pOVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (expression_statement "Track_relocs<32,_false> *pTVar15;" (update_expression "Track_relocs<32,_false> *pTVar15" (binary_expression "Track_relocs<32,_false> *pTVar15" (binary_expression "Track_relocs<32" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*pTVar15" * identifier)) --) ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "longlong lVar21;" type_identifier identifier ;) (declaration "longlong lVar22;" type_identifier identifier ;) (declaration "undefined1 auStack_c8 [68];" type_identifier (array_declarator "auStack_c8 [68]" identifier [ number_literal ]) ;) (declaration "undefined *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "undefined *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "undefined *puStack_7c;" type_identifier (pointer_declarator "*puStack_7c" * identifier) ;) (declaration "code *pcStack_74;" type_identifier (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "undefined *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "int *piStack_58;" primitive_type (pointer_declarator "*piStack_58" * identifier) ;) (declaration "int iStack_54;" primitive_type identifier ;) (expression_statement "Track_relocs<32,_false> *pTStack_50;" (update_expression "Track_relocs<32,_false> *pTStack_50" (binary_expression "Track_relocs<32,_false> *pTStack_50" (binary_expression "Track_relocs<32" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*pTStack_50" * identifier)) --) ;) (expression_statement "Sized_elf_reloc_mapper<32,_false> *pSStack_4c;" (update_expression "Sized_elf_reloc_mapper<32,_false> *pSStack_4c" (binary_expression "Sized_elf_reloc_mapper<32,_false> *pSStack_4c" (binary_expression "Sized_elf_reloc_mapper<32" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*pSStack_4c" * identifier)) --) ;) (expression_statement "lVar22 = CONCAT44(in_a2,in_a3);" (assignment_expression "lVar22 = CONCAT44(in_a2,in_a3)" identifier = (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) ;) (expression_statement "pTVar15 = &this->track_relocs_;" (assignment_expression "pTVar15 = &this->track_relocs_" identifier = (pointer_expression "&this->track_relocs_" & (field_expression "this->track_relocs_" identifier -> field_identifier))) ;) (expression_statement "(*(code *)PTR_advance_004c2a14)(pTVar15);" (call_expression "(*(code *)PTR_advance_004c2a14)(pTVar15)" (parenthesized_expression "(*(code *)PTR_advance_004c2a14)" ( (pointer_expression "*(code *)PTR_advance_004c2a14" * (cast_expression "(code *)PTR_advance_004c2a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pTVar15)" ( identifier ))) ;) (expression_statement "lVar21 = (*(code *)PTR_next_offset_004c2a18)(pTVar15);" (assignment_expression "lVar21 = (*(code *)PTR_next_offset_004c2a18)(pTVar15)" identifier = (call_expression "(*(code *)PTR_next_offset_004c2a18)(pTVar15)" (parenthesized_expression "(*(code *)PTR_next_offset_004c2a18)" ( (pointer_expression "*(code *)PTR_next_offset_004c2a18" * (cast_expression "(code *)PTR_next_offset_004c2a18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pTVar15)" ( identifier )))) ;) (if_statement "if (lVar21 != lVar22) {\n    return 0;\n  }" if (parenthesized_expression "(lVar21 != lVar22)" ( (binary_expression "lVar21 != lVar22" identifier != identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(pTVar15);" (assignment_expression "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(pTVar15)" identifier = (call_expression "(*(code *)PTR_next_symndx_004c2a3c)(pTVar15)" (parenthesized_expression "(*(code *)PTR_next_symndx_004c2a3c)" ( (pointer_expression "*(code *)PTR_next_symndx_004c2a3c" * (cast_expression "(code *)PTR_next_symndx_004c2a3c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pTVar15)" ( identifier )))) ;) (expression_statement "uVar3 = (iVar2 + 1) * 0x10;" (assignment_expression "uVar3 = (iVar2 + 1) * 0x10" identifier = (binary_expression "(iVar2 + 1) * 0x10" (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((-1 < *(int *)&this->symtab_size_) &&\n     ((*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_)))) {\n    uVar1 = *(ushort *)(this->symtab_ + (uVar3 - 2));\n    uVar17 = *(uint *)(this->symtab_ + (uVar3 - 0xc));\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      pOVar8 = this->object_;\n      pXVar6 = pOVar8->xindex_;\n      if (pXVar6 == (Xindex *)0x0) {\n        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);\n        pOVar8->xindex_ = pXVar6;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2);\n    }\n    iVar2 = (((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000;\n    if (this->reloc_type_ == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(pTVar15);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    reloc_offset._0_4_[1] = iVar2;\n    *reloc_offset._0_4_ = 0;\n    return uVar3;\n  }" if (parenthesized_expression "((-1 < *(int *)&this->symtab_size_) &&\n     ((*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_))))" ( (binary_expression "(-1 < *(int *)&this->symtab_size_) &&\n     ((*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_)))" (parenthesized_expression "(-1 < *(int *)&this->symtab_size_)" ( (binary_expression "-1 < *(int *)&this->symtab_size_" number_literal < (pointer_expression "*(int *)&this->symtab_size_" * (cast_expression "(int *)&this->symtab_size_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->symtab_size_" & (field_expression "this->symtab_size_" identifier -> field_identifier))))) )) && (parenthesized_expression "((*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_)))" ( (parenthesized_expression "(*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_))" ( (binary_expression "*(int *)&this->symtab_size_ != 0 || (uVar3 <= (uint)this->symtab_size_)" (binary_expression "*(int *)&this->symtab_size_ != 0" (pointer_expression "*(int *)&this->symtab_size_" * (cast_expression "(int *)&this->symtab_size_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->symtab_size_" & (field_expression "this->symtab_size_" identifier -> field_identifier)))) != number_literal) || (parenthesized_expression "(uVar3 <= (uint)this->symtab_size_)" ( (binary_expression "uVar3 <= (uint)this->symtab_size_" identifier <= (cast_expression "(uint)this->symtab_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->symtab_size_" identifier -> field_identifier))) ))) )) ))) )) (compound_statement "{\n    uVar1 = *(ushort *)(this->symtab_ + (uVar3 - 2));\n    uVar17 = *(uint *)(this->symtab_ + (uVar3 - 0xc));\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      pOVar8 = this->object_;\n      pXVar6 = pOVar8->xindex_;\n      if (pXVar6 == (Xindex *)0x0) {\n        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);\n        pOVar8->xindex_ = pXVar6;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2);\n    }\n    iVar2 = (((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000;\n    if (this->reloc_type_ == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(pTVar15);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    reloc_offset._0_4_[1] = iVar2;\n    *reloc_offset._0_4_ = 0;\n    return uVar3;\n  }" { (expression_statement "uVar1 = *(ushort *)(this->symtab_ + (uVar3 - 2));" (assignment_expression "uVar1 = *(ushort *)(this->symtab_ + (uVar3 - 2))" identifier = (pointer_expression "*(ushort *)(this->symtab_ + (uVar3 - 2))" * (cast_expression "(ushort *)(this->symtab_ + (uVar3 - 2))" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this->symtab_ + (uVar3 - 2))" ( (binary_expression "this->symtab_ + (uVar3 - 2)" (field_expression "this->symtab_" identifier -> field_identifier) + (parenthesized_expression "(uVar3 - 2)" ( (binary_expression "uVar3 - 2" identifier - number_literal) ))) ))))) ;) (expression_statement "uVar17 = *(uint *)(this->symtab_ + (uVar3 - 0xc));" (assignment_expression "uVar17 = *(uint *)(this->symtab_ + (uVar3 - 0xc))" identifier = (pointer_expression "*(uint *)(this->symtab_ + (uVar3 - 0xc))" * (cast_expression "(uint *)(this->symtab_ + (uVar3 - 0xc))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this->symtab_ + (uVar3 - 0xc))" ( (binary_expression "this->symtab_ + (uVar3 - 0xc)" (field_expression "this->symtab_" identifier -> field_identifier) + (parenthesized_expression "(uVar3 - 0xc)" ( (binary_expression "uVar3 - 0xc" identifier - number_literal) ))) ))))) ;) (expression_statement "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);" (assignment_expression "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" identifier = (binary_expression "(uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" (binary_expression "(uVar1 & 0xff) << 8" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) << number_literal) | (call_expression "(uint)(uVar1 >> 8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) ))))) ;) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      pOVar8 = this->object_;\n      pXVar6 = pOVar8->xindex_;\n      if (pXVar6 == (Xindex *)0x0) {\n        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);\n        pOVar8->xindex_ = pXVar6;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2);\n    }" if (parenthesized_expression "(0xfeff < uVar3)" ( (binary_expression "0xfeff < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      pOVar8 = this->object_;\n      pXVar6 = pOVar8->xindex_;\n      if (pXVar6 == (Xindex *)0x0) {\n        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);\n        pOVar8->xindex_ = pXVar6;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2);\n    }" { (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 != 0xffff)" ( (binary_expression "uVar3 != 0xffff" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pOVar8 = this->object_;" (assignment_expression "pOVar8 = this->object_" identifier = (field_expression "this->object_" identifier -> field_identifier)) ;) (expression_statement "pXVar6 = pOVar8->xindex_;" (assignment_expression "pXVar6 = pOVar8->xindex_" identifier = (field_expression "pOVar8->xindex_" identifier -> field_identifier)) ;) (if_statement "if (pXVar6 == (Xindex *)0x0) {\n        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);\n        pOVar8->xindex_ = pXVar6;\n      }" if (parenthesized_expression "(pXVar6 == (Xindex *)0x0)" ( (binary_expression "pXVar6 == (Xindex *)0x0" identifier == (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);\n        pOVar8->xindex_ = pXVar6;\n      }" { (expression_statement "pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8);" (assignment_expression "pXVar6 = (Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8)" identifier = (cast_expression "(Xindex *)(*pOVar8->_vptr_Object[0x1b])(pOVar8)" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pOVar8->_vptr_Object[0x1b])(pOVar8)" (parenthesized_expression "(*pOVar8->_vptr_Object[0x1b])" ( (pointer_expression "*pOVar8->_vptr_Object[0x1b]" * (subscript_expression "pOVar8->_vptr_Object[0x1b]" (field_expression "pOVar8->_vptr_Object" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pOVar8)" ( identifier ))))) ;) (expression_statement "pOVar8->xindex_ = pXVar6;" (assignment_expression "pOVar8->xindex_ = pXVar6" (field_expression "pOVar8->xindex_" identifier -> field_identifier) = identifier) ;) })) (expression_statement "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2);" (assignment_expression "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2)" identifier = (call_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(pXVar6,pOVar8,iVar2)" (parenthesized_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)" ( (pointer_expression "*(code *)PTR_sym_xindex_to_shndx_004c1ab0" * (cast_expression "(code *)PTR_sym_xindex_to_shndx_004c1ab0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pXVar6,pOVar8,iVar2)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "iVar2 = (((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000;" (assignment_expression "iVar2 = (((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000" identifier = (binary_expression "(((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10)" ( (binary_expression "(uVar17 >> 0x10) << 0x18 | (uVar17 >> 0x18) << 0x10" (binary_expression "(uVar17 >> 0x10) << 0x18" (parenthesized_expression "(uVar17 >> 0x10)" ( (binary_expression "uVar17 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar17 >> 0x18) << 0x10" (parenthesized_expression "(uVar17 >> 0x18)" ( (binary_expression "uVar17 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff)" ( (binary_expression "(uVar17 & 0xff) << 8 | uVar17 >> 8 & 0xff" (binary_expression "(uVar17 & 0xff) << 8" (parenthesized_expression "(uVar17 & 0xff)" ( (binary_expression "uVar17 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar17 >> 8 & 0xff" (binary_expression "uVar17 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal))) ;) (if_statement "if (this->reloc_type_ == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(pTVar15);\n      iVar2 = iVar2 + extraout_v1;\n    }" if (parenthesized_expression "(this->reloc_type_ == 4)" ( (binary_expression "this->reloc_type_ == 4" (field_expression "this->reloc_type_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_next_addend_004c2a40)(pTVar15);\n      iVar2 = iVar2 + extraout_v1;\n    }" { (expression_statement "(*(code *)PTR_next_addend_004c2a40)(pTVar15);" (call_expression "(*(code *)PTR_next_addend_004c2a40)(pTVar15)" (parenthesized_expression "(*(code *)PTR_next_addend_004c2a40)" ( (pointer_expression "*(code *)PTR_next_addend_004c2a40" * (cast_expression "(code *)PTR_next_addend_004c2a40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pTVar15)" ( identifier ))) ;) (expression_statement "iVar2 = iVar2 + extraout_v1;" (assignment_expression "iVar2 = iVar2 + extraout_v1" identifier = (binary_expression "iVar2 + extraout_v1" identifier + identifier)) ;) })) (expression_statement "reloc_offset._0_4_[1] = iVar2;" (assignment_expression "reloc_offset._0_4_[1] = iVar2" (subscript_expression "reloc_offset._0_4_[1]" (field_expression "reloc_offset._0_4_" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "*reloc_offset._0_4_ = 0;" (assignment_expression "*reloc_offset._0_4_ = 0" (pointer_expression "*reloc_offset._0_4_" * (field_expression "reloc_offset._0_4_" identifier . field_identifier)) = number_literal) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar10 = PTR_s_in_a_linker_script_004c191c + 0x746c;" (assignment_expression "puVar10 = PTR_s_in_a_linker_script_004c191c + 0x746c" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x746c" identifier + number_literal)) ;) (expression_statement "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x7090;" (assignment_expression "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x7090" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7090" identifier + number_literal)) ;) (expression_statement "puVar18 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar18 = PTR_do_gold_unreachable_004c1a30" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar7,0x3d);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar7,0x3d)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar7,0x3d)" ( identifier , number_literal ))) ;) (expression_statement "puStack_60 = puVar18 + 0x1e29bc;" (assignment_expression "puStack_60 = puVar18 + 0x1e29bc" identifier = (binary_expression "puVar18 + 0x1e29bc" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar7 + 0x1c;" (assignment_expression "puVar16 = puVar7 + 0x1c" identifier = (binary_expression "puVar7 + 0x1c" identifier + number_literal)) ;) (expression_statement "pTStack_50 = pTVar15;" (assignment_expression "pTStack_50 = pTVar15" identifier = identifier) ;) (expression_statement "pSStack_4c = this;" (assignment_expression "pSStack_4c = this" identifier = identifier) ;) (expression_statement "(**(code **)(puVar18 + 0x1dc184))(puVar16);" (call_expression "(**(code **)(puVar18 + 0x1dc184))(puVar16)" (parenthesized_expression "(**(code **)(puVar18 + 0x1dc184))" ( (pointer_expression "**(code **)(puVar18 + 0x1dc184)" * (pointer_expression "*(code **)(puVar18 + 0x1dc184)" * (cast_expression "(code **)(puVar18 + 0x1dc184)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x1dc184)" ( (binary_expression "puVar18 + 0x1dc184" identifier + number_literal) ))))) )) (argument_list "(puVar16)" ( identifier ))) ;) (expression_statement "lVar22 = (**(code **)(puStack_60 + -0x6834))(puVar16);" (assignment_expression "lVar22 = (**(code **)(puStack_60 + -0x6834))(puVar16)" identifier = (call_expression "(**(code **)(puStack_60 + -0x6834))(puVar16)" (parenthesized_expression "(**(code **)(puStack_60 + -0x6834))" ( (pointer_expression "**(code **)(puStack_60 + -0x6834)" * (pointer_expression "*(code **)(puStack_60 + -0x6834)" * (cast_expression "(code **)(puStack_60 + -0x6834)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_60 + -0x6834)" ( (binary_expression "puStack_60 + -0x6834" identifier + number_literal) ))))) )) (argument_list "(puVar16)" ( identifier )))) ;) (if_statement "if (lVar22 != CONCAT44(puVar10,in_a3)) {\n    return 0;\n  }" if (parenthesized_expression "(lVar22 != CONCAT44(puVar10,in_a3))" ( (binary_expression "lVar22 != CONCAT44(puVar10,in_a3)" identifier != (call_expression "CONCAT44(puVar10,in_a3)" identifier (argument_list "(puVar10,in_a3)" ( identifier , identifier )))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = (**(code **)(puStack_60 + -0x67fc))(puVar16);" (assignment_expression "iVar2 = (**(code **)(puStack_60 + -0x67fc))(puVar16)" identifier = (call_expression "(**(code **)(puStack_60 + -0x67fc))(puVar16)" (parenthesized_expression "(**(code **)(puStack_60 + -0x67fc))" ( (pointer_expression "**(code **)(puStack_60 + -0x67fc)" * (pointer_expression "*(code **)(puStack_60 + -0x67fc)" * (cast_expression "(code **)(puStack_60 + -0x67fc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_60 + -0x67fc)" ( (binary_expression "puStack_60 + -0x67fc" identifier + number_literal) ))))) )) (argument_list "(puVar16)" ( identifier )))) ;) (expression_statement "uVar3 = (iVar2 + 1) * 0x18;" (assignment_expression "uVar3 = (iVar2 + 1) * 0x18" identifier = (binary_expression "(iVar2 + 1) * 0x18" (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((-1 < *(int *)(puVar7 + 0x10)) &&\n     ((*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14))))) {\n    iVar4 = *(int *)(puVar7 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar4 + 6);\n    lVar22 = *(longlong *)(iVar4 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar9 = *(int **)(puVar7 + 4);\n      iVar4 = piVar9[0xc];\n      if (iVar4 == 0) {\n        piStack_58 = piVar9;\n        iStack_54 = iVar2;\n        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);\n        piStack_58[0xc] = iVar4;\n        piVar9 = piStack_58;\n        iVar2 = iStack_54;\n      }\n      uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2);\n    }\n    if (*(int *)(puVar7 + 0x18) == 4) {\n      lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16);\n      lVar22 = lVar21 + lVar22;\n    }\n    Position_dependent_options::default_options_.relax_.user_set_via_option =\n         (bool)(char)((ulonglong)lVar22 >> 0x38);\n    Position_dependent_options::default_options_.relax_.value =\n         (bool)(char)((ulonglong)lVar22 >> 0x30);\n    Position_dependent_options::default_options_.relax_._62_2_ = (short)((ulonglong)lVar22 >> 0x20);\n    Position_dependent_options::default_options_.no_relax_initializer_.super_Struct_var.\n    _vptr_Struct_var = (_func_int_varargs **)(int)lVar22;\n    return uVar3;\n  }" if (parenthesized_expression "((-1 < *(int *)(puVar7 + 0x10)) &&\n     ((*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14)))))" ( (binary_expression "(-1 < *(int *)(puVar7 + 0x10)) &&\n     ((*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14))))" (parenthesized_expression "(-1 < *(int *)(puVar7 + 0x10))" ( (binary_expression "-1 < *(int *)(puVar7 + 0x10)" number_literal < (pointer_expression "*(int *)(puVar7 + 0x10)" * (cast_expression "(int *)(puVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x10)" ( (binary_expression "puVar7 + 0x10" identifier + number_literal) ))))) )) && (parenthesized_expression "((*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14))))" ( (parenthesized_expression "(*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14)))" ( (binary_expression "*(int *)(puVar7 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar7 + 0x14))" (binary_expression "*(int *)(puVar7 + 0x10) != 0" (pointer_expression "*(int *)(puVar7 + 0x10)" * (cast_expression "(int *)(puVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x10)" ( (binary_expression "puVar7 + 0x10" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(uVar3 <= *(uint *)(puVar7 + 0x14))" ( (binary_expression "uVar3 <= *(uint *)(puVar7 + 0x14)" identifier <= (pointer_expression "*(uint *)(puVar7 + 0x14)" * (cast_expression "(uint *)(puVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x14)" ( (binary_expression "puVar7 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n    iVar4 = *(int *)(puVar7 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar4 + 6);\n    lVar22 = *(longlong *)(iVar4 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar9 = *(int **)(puVar7 + 4);\n      iVar4 = piVar9[0xc];\n      if (iVar4 == 0) {\n        piStack_58 = piVar9;\n        iStack_54 = iVar2;\n        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);\n        piStack_58[0xc] = iVar4;\n        piVar9 = piStack_58;\n        iVar2 = iStack_54;\n      }\n      uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2);\n    }\n    if (*(int *)(puVar7 + 0x18) == 4) {\n      lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16);\n      lVar22 = lVar21 + lVar22;\n    }\n    Position_dependent_options::default_options_.relax_.user_set_via_option =\n         (bool)(char)((ulonglong)lVar22 >> 0x38);\n    Position_dependent_options::default_options_.relax_.value =\n         (bool)(char)((ulonglong)lVar22 >> 0x30);\n    Position_dependent_options::default_options_.relax_._62_2_ = (short)((ulonglong)lVar22 >> 0x20);\n    Position_dependent_options::default_options_.no_relax_initializer_.super_Struct_var.\n    _vptr_Struct_var = (_func_int_varargs **)(int)lVar22;\n    return uVar3;\n  }" { (expression_statement "iVar4 = *(int *)(puVar7 + 8) + (uVar3 - 0x18);" (assignment_expression "iVar4 = *(int *)(puVar7 + 8) + (uVar3 - 0x18)" identifier = (binary_expression "*(int *)(puVar7 + 8) + (uVar3 - 0x18)" (pointer_expression "*(int *)(puVar7 + 8)" * (cast_expression "(int *)(puVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 8)" ( (binary_expression "puVar7 + 8" identifier + number_literal) )))) + (parenthesized_expression "(uVar3 - 0x18)" ( (binary_expression "uVar3 - 0x18" identifier - number_literal) )))) ;) (expression_statement "uVar3 = (uint)*(ushort *)(iVar4 + 6);" (assignment_expression "uVar3 = (uint)*(ushort *)(iVar4 + 6)" identifier = (binary_expression "(uint)*(ushort *)(iVar4 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar4 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 6)" ( (binary_expression "iVar4 + 6" identifier + number_literal) ))))) ;) (expression_statement "lVar22 = *(longlong *)(iVar4 + 8);" (assignment_expression "lVar22 = *(longlong *)(iVar4 + 8)" identifier = (pointer_expression "*(longlong *)(iVar4 + 8)" * (cast_expression "(longlong *)(iVar4 + 8)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar9 = *(int **)(puVar7 + 4);\n      iVar4 = piVar9[0xc];\n      if (iVar4 == 0) {\n        piStack_58 = piVar9;\n        iStack_54 = iVar2;\n        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);\n        piStack_58[0xc] = iVar4;\n        piVar9 = piStack_58;\n        iVar2 = iStack_54;\n      }\n      uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2);\n    }" if (parenthesized_expression "(0xfeff < uVar3)" ( (binary_expression "0xfeff < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar9 = *(int **)(puVar7 + 4);\n      iVar4 = piVar9[0xc];\n      if (iVar4 == 0) {\n        piStack_58 = piVar9;\n        iStack_54 = iVar2;\n        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);\n        piStack_58[0xc] = iVar4;\n        piVar9 = piStack_58;\n        iVar2 = iStack_54;\n      }\n      uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2);\n    }" { (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 != 0xffff)" ( (binary_expression "uVar3 != 0xffff" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar9 = *(int **)(puVar7 + 4);" (assignment_expression "piVar9 = *(int **)(puVar7 + 4)" identifier = (pointer_expression "*(int **)(puVar7 + 4)" * (cast_expression "(int **)(puVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 4)" ( (binary_expression "puVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = piVar9[0xc];" (assignment_expression "iVar4 = piVar9[0xc]" identifier = (subscript_expression "piVar9[0xc]" identifier [ number_literal ])) ;) (if_statement "if (iVar4 == 0) {\n        piStack_58 = piVar9;\n        iStack_54 = iVar2;\n        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);\n        piStack_58[0xc] = iVar4;\n        piVar9 = piStack_58;\n        iVar2 = iStack_54;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        piStack_58 = piVar9;\n        iStack_54 = iVar2;\n        iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);\n        piStack_58[0xc] = iVar4;\n        piVar9 = piStack_58;\n        iVar2 = iStack_54;\n      }" { (expression_statement "piStack_58 = piVar9;" (assignment_expression "piStack_58 = piVar9" identifier = identifier) ;) (expression_statement "iStack_54 = iVar2;" (assignment_expression "iStack_54 = iVar2" identifier = identifier) ;) (expression_statement "iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9);" (assignment_expression "iVar4 = (**(code **)(*piVar9 + 0x6c))(piVar9)" identifier = (call_expression "(**(code **)(*piVar9 + 0x6c))(piVar9)" (parenthesized_expression "(**(code **)(*piVar9 + 0x6c))" ( (pointer_expression "**(code **)(*piVar9 + 0x6c)" * (pointer_expression "*(code **)(*piVar9 + 0x6c)" * (cast_expression "(code **)(*piVar9 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar9 + 0x6c)" ( (binary_expression "*piVar9 + 0x6c" (pointer_expression "*piVar9" * identifier) + number_literal) ))))) )) (argument_list "(piVar9)" ( identifier )))) ;) (expression_statement "piStack_58[0xc] = iVar4;" (assignment_expression "piStack_58[0xc] = iVar4" (subscript_expression "piStack_58[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9 = piStack_58;" (assignment_expression "piVar9 = piStack_58" identifier = identifier) ;) (expression_statement "iVar2 = iStack_54;" (assignment_expression "iVar2 = iStack_54" identifier = identifier) ;) })) (expression_statement "uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2);" (assignment_expression "uVar3 = (**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2)" identifier = (call_expression "(**(code **)(puStack_60 + -0x7790))(iVar4,piVar9,iVar2)" (parenthesized_expression "(**(code **)(puStack_60 + -0x7790))" ( (pointer_expression "**(code **)(puStack_60 + -0x7790)" * (pointer_expression "*(code **)(puStack_60 + -0x7790)" * (cast_expression "(code **)(puStack_60 + -0x7790)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_60 + -0x7790)" ( (binary_expression "puStack_60 + -0x7790" identifier + number_literal) ))))) )) (argument_list "(iVar4,piVar9,iVar2)" ( identifier , identifier , identifier )))) ;) })) (if_statement "if (*(int *)(puVar7 + 0x18) == 4) {\n      lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16);\n      lVar22 = lVar21 + lVar22;\n    }" if (parenthesized_expression "(*(int *)(puVar7 + 0x18) == 4)" ( (binary_expression "*(int *)(puVar7 + 0x18) == 4" (pointer_expression "*(int *)(puVar7 + 0x18)" * (cast_expression "(int *)(puVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x18)" ( (binary_expression "puVar7 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16);\n      lVar22 = lVar21 + lVar22;\n    }" { (expression_statement "lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16);" (assignment_expression "lVar21 = (**(code **)(puStack_60 + -0x67f8))(puVar16)" identifier = (call_expression "(**(code **)(puStack_60 + -0x67f8))(puVar16)" (parenthesized_expression "(**(code **)(puStack_60 + -0x67f8))" ( (pointer_expression "**(code **)(puStack_60 + -0x67f8)" * (pointer_expression "*(code **)(puStack_60 + -0x67f8)" * (cast_expression "(code **)(puStack_60 + -0x67f8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_60 + -0x67f8)" ( (binary_expression "puStack_60 + -0x67f8" identifier + number_literal) ))))) )) (argument_list "(puVar16)" ( identifier )))) ;) (expression_statement "lVar22 = lVar21 + lVar22;" (assignment_expression "lVar22 = lVar21 + lVar22" identifier = (binary_expression "lVar21 + lVar22" identifier + identifier)) ;) })) (labeled_statement "Position_dependent_options::default_options_.relax_.user_set_via_option =\n         (bool)(char)((ulonglong)lVar22 >> 0x38);" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.relax_.user_set_via_option =\n         (bool)(char)((ulonglong)lVar22 >> 0x38);" (assignment_expression "default_options_.relax_.user_set_via_option =\n         (bool)(char)((ulonglong)lVar22 >> 0x38)" (field_expression "default_options_.relax_.user_set_via_option" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) = (cast_expression "(bool)(char)((ulonglong)lVar22 >> 0x38)" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(char)((ulonglong)lVar22 >> 0x38)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ulonglong)lVar22 >> 0x38)" ( (binary_expression "(ulonglong)lVar22 >> 0x38" (cast_expression "(ulonglong)lVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;)) (labeled_statement "Position_dependent_options::default_options_.relax_.value =\n         (bool)(char)((ulonglong)lVar22 >> 0x30);" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.relax_.value =\n         (bool)(char)((ulonglong)lVar22 >> 0x30);" (assignment_expression "default_options_.relax_.value =\n         (bool)(char)((ulonglong)lVar22 >> 0x30)" (field_expression "default_options_.relax_.value" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) = (cast_expression "(bool)(char)((ulonglong)lVar22 >> 0x30)" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(char)((ulonglong)lVar22 >> 0x30)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((ulonglong)lVar22 >> 0x30)" ( (binary_expression "(ulonglong)lVar22 >> 0x30" (cast_expression "(ulonglong)lVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;)) (labeled_statement "Position_dependent_options::default_options_.relax_._62_2_ = (short)((ulonglong)lVar22 >> 0x20);" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.relax_._62_2_ = (short)((ulonglong)lVar22 >> 0x20);" (assignment_expression "default_options_.relax_._62_2_ = (short)((ulonglong)lVar22 >> 0x20)" (field_expression "default_options_.relax_._62_2_" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) = (cast_expression "(short)((ulonglong)lVar22 >> 0x20)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((ulonglong)lVar22 >> 0x20)" ( (binary_expression "(ulonglong)lVar22 >> 0x20" (cast_expression "(ulonglong)lVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;)) (labeled_statement "Position_dependent_options::default_options_.no_relax_initializer_.super_Struct_var.\n    _vptr_Struct_var = (_func_int_varargs **)(int)lVar22;" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.no_relax_initializer_.super_Struct_var.\n    _vptr_Struct_var = (_func_int_varargs **)(int)lVar22;" (assignment_expression "default_options_.no_relax_initializer_.super_Struct_var.\n    _vptr_Struct_var = (_func_int_varargs **)(int)lVar22" (field_expression "default_options_.no_relax_initializer_.super_Struct_var.\n    _vptr_Struct_var" (field_expression "default_options_.no_relax_initializer_.super_Struct_var" (field_expression "default_options_.no_relax_initializer_" identifier . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)(int)lVar22" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (cast_expression "(int)lVar22" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "iVar4 = 0x3d;" (assignment_expression "iVar4 = 0x3d" identifier = number_literal) ;) (expression_statement "pcVar19 = *(code **)(puStack_60 + -0x7810);" (assignment_expression "pcVar19 = *(code **)(puStack_60 + -0x7810)" identifier = (pointer_expression "*(code **)(puStack_60 + -0x7810)" * (cast_expression "(code **)(puStack_60 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puStack_60 + -0x7810)" ( (binary_expression "puStack_60 + -0x7810" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puStack_60 + -0x7924) + 0x747c;" (assignment_expression "iVar11 = *(int *)(puStack_60 + -0x7924) + 0x747c" identifier = (binary_expression "*(int *)(puStack_60 + -0x7924) + 0x747c" (pointer_expression "*(int *)(puStack_60 + -0x7924)" * (cast_expression "(int *)(puStack_60 + -0x7924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_60 + -0x7924)" ( (binary_expression "puStack_60 + -0x7924" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "pcVar20 = Sized_dwarf_line_info<32,_false>::format_file_lineno;" (update_expression "pcVar20 = Sized_dwarf_line_info<32,_false>::format_file_lineno" (binary_expression "pcVar20 = Sized_dwarf_line_info<32,_false>::format_file_lineno" (assignment_expression "pcVar20 = Sized_dwarf_line_info<32" identifier = (binary_expression "Sized_dwarf_line_info<32" identifier < number_literal)) (ERROR ",_false" , identifier) > (ERROR "::" : :) identifier) --) ;) (expression_statement "piVar9 = (int *)(*(int *)(puStack_60 + -0x7924) + 0x7090);" (assignment_expression "piVar9 = (int *)(*(int *)(puStack_60 + -0x7924) + 0x7090)" identifier = (cast_expression "(int *)(*(int *)(puStack_60 + -0x7924) + 0x7090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puStack_60 + -0x7924) + 0x7090)" ( (binary_expression "*(int *)(puStack_60 + -0x7924) + 0x7090" (pointer_expression "*(int *)(puStack_60 + -0x7924)" * (cast_expression "(int *)(puStack_60 + -0x7924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puStack_60 + -0x7924)" ( (binary_expression "puStack_60 + -0x7924" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar19)();" (call_expression "(*pcVar19)()" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 *)(piVar9 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar9 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar9 + 2)" * (cast_expression "(undefined1 *)(piVar9 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar9 + 2)" ( (binary_expression "piVar9 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar13 = *(int *)(iVar4 + 0x70);" (assignment_expression "iVar13 = *(int *)(iVar4 + 0x70)" identifier = (pointer_expression "*(int *)(iVar4 + 0x70)" * (cast_expression "(int *)(iVar4 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x70)" ( (binary_expression "iVar4 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar4 + 0x74);" (assignment_expression "iVar2 = *(int *)(iVar4 + 0x74)" identifier = (pointer_expression "*(int *)(iVar4 + 0x74)" * (cast_expression "(int *)(iVar4 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x74)" ( (binary_expression "iVar4 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "piVar9[1] = 0;" (assignment_expression "piVar9[1] = 0" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar12 = *(int *)(iVar11 + 8);" (assignment_expression "iVar12 = *(int *)(iVar11 + 8)" identifier = (pointer_expression "*(int *)(iVar11 + 8)" * (cast_expression "(int *)(iVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "*piVar9 = (int)(piVar9 + 2);" (assignment_expression "*piVar9 = (int)(piVar9 + 2)" (pointer_expression "*piVar9" * identifier) = (cast_expression "(int)(piVar9 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar9 + 2)" ( (binary_expression "piVar9 + 2" identifier + number_literal) )))) ;) (expression_statement "puStack_84 = puVar16;" (assignment_expression "puStack_84 = puVar16" identifier = identifier) ;) (expression_statement "puStack_80 = puVar7;" (assignment_expression "puStack_80 = puVar7" identifier = identifier) ;) (expression_statement "puStack_7c = puVar10;" (assignment_expression "puStack_7c = puVar10" identifier = identifier) ;) (expression_statement "pcStack_74 = pcVar20;" (assignment_expression "pcStack_74 = pcVar20" identifier = identifier) ;) (if_statement "if (iVar12 < (iVar2 - iVar13 >> 2) * -0x55555555) {\n    uVar3 = *(uint *)(iVar11 + 0xc) >> 1;\n    piVar14 = (int *)(iVar13 + iVar12 * 0xc);\n    iVar2 = *piVar14;\n    if (uVar3 < (uint)((piVar14[1] - iVar2 >> 2) * -0x49249249)) {\n      piVar14 = (int *)(iVar2 + uVar3 * 0x1c);\n      if (iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555) {\n        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);\n        iVar2 = *piVar5;\n        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }\n        (**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );\n      }\n      (**(code **)(pcVar19 + 0x1dafd8))\n                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n    }\n    (**(code **)(pcVar19 + 0x1dafd8))\n              (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e3,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n  }" if (parenthesized_expression "(iVar12 < (iVar2 - iVar13 >> 2) * -0x55555555)" ( (binary_expression "iVar12 < (iVar2 - iVar13 >> 2) * -0x55555555" identifier < (binary_expression "(iVar2 - iVar13 >> 2) * -0x55555555" (parenthesized_expression "(iVar2 - iVar13 >> 2)" ( (binary_expression "iVar2 - iVar13 >> 2" (binary_expression "iVar2 - iVar13" identifier - identifier) >> number_literal) )) * number_literal)) )) (compound_statement "{\n    uVar3 = *(uint *)(iVar11 + 0xc) >> 1;\n    piVar14 = (int *)(iVar13 + iVar12 * 0xc);\n    iVar2 = *piVar14;\n    if (uVar3 < (uint)((piVar14[1] - iVar2 >> 2) * -0x49249249)) {\n      piVar14 = (int *)(iVar2 + uVar3 * 0x1c);\n      if (iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555) {\n        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);\n        iVar2 = *piVar5;\n        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }\n        (**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );\n      }\n      (**(code **)(pcVar19 + 0x1dafd8))\n                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n    }\n    (**(code **)(pcVar19 + 0x1dafd8))\n              (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e3,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n  }" { (expression_statement "uVar3 = *(uint *)(iVar11 + 0xc) >> 1;" (assignment_expression "uVar3 = *(uint *)(iVar11 + 0xc) >> 1" identifier = (binary_expression "*(uint *)(iVar11 + 0xc) >> 1" (pointer_expression "*(uint *)(iVar11 + 0xc)" * (cast_expression "(uint *)(iVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "piVar14 = (int *)(iVar13 + iVar12 * 0xc);" (assignment_expression "piVar14 = (int *)(iVar13 + iVar12 * 0xc)" identifier = (cast_expression "(int *)(iVar13 + iVar12 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar12 * 0xc)" ( (binary_expression "iVar13 + iVar12 * 0xc" identifier + (binary_expression "iVar12 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "iVar2 = *piVar14;" (assignment_expression "iVar2 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (if_statement "if (uVar3 < (uint)((piVar14[1] - iVar2 >> 2) * -0x49249249)) {\n      piVar14 = (int *)(iVar2 + uVar3 * 0x1c);\n      if (iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555) {\n        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);\n        iVar2 = *piVar5;\n        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }\n        (**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );\n      }\n      (**(code **)(pcVar19 + 0x1dafd8))\n                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n    }" if (parenthesized_expression "(uVar3 < (uint)((piVar14[1] - iVar2 >> 2) * -0x49249249))" ( (binary_expression "uVar3 < (uint)((piVar14[1] - iVar2 >> 2) * -0x49249249)" identifier < (call_expression "(uint)((piVar14[1] - iVar2 >> 2) * -0x49249249)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((piVar14[1] - iVar2 >> 2) * -0x49249249)" ( (binary_expression "(piVar14[1] - iVar2 >> 2) * -0x49249249" (parenthesized_expression "(piVar14[1] - iVar2 >> 2)" ( (binary_expression "piVar14[1] - iVar2 >> 2" (binary_expression "piVar14[1] - iVar2" (subscript_expression "piVar14[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal) )))) )) (compound_statement "{\n      piVar14 = (int *)(iVar2 + uVar3 * 0x1c);\n      if (iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555) {\n        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);\n        iVar2 = *piVar5;\n        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }\n        (**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );\n      }\n      (**(code **)(pcVar19 + 0x1dafd8))\n                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c);\n    }" { (expression_statement "piVar14 = (int *)(iVar2 + uVar3 * 0x1c);" (assignment_expression "piVar14 = (int *)(iVar2 + uVar3 * 0x1c)" identifier = (cast_expression "(int *)(iVar2 + uVar3 * 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar3 * 0x1c)" ( (binary_expression "iVar2 + uVar3 * 0x1c" identifier + (binary_expression "uVar3 * 0x1c" identifier * number_literal)) )))) ;) (if_statement "if (iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555) {\n        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);\n        iVar2 = *piVar5;\n        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }\n        (**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );\n      }" if (parenthesized_expression "(iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555)" ( (binary_expression "iVar12 < (*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555" identifier < (binary_expression "(*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2) * -0x55555555" (parenthesized_expression "(*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2)" ( (binary_expression "*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100) >> 2" (binary_expression "*(int *)(iVar4 + 0x68) - *(int *)(iVar4 + 100)" (pointer_expression "*(int *)(iVar4 + 0x68)" * (cast_expression "(int *)(iVar4 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x68)" ( (binary_expression "iVar4 + 0x68" identifier + number_literal) )))) - (pointer_expression "*(int *)(iVar4 + 100)" * (cast_expression "(int *)(iVar4 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 100)" ( (binary_expression "iVar4 + 100" identifier + number_literal) ))))) >> number_literal) )) * number_literal)) )) (compound_statement "{\n        piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);\n        iVar2 = *piVar5;\n        if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }\n        (**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );\n      }" { (expression_statement "piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc);" (assignment_expression "piVar5 = (int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc)" identifier = (cast_expression "(int *)(*(int *)(iVar4 + 100) + iVar12 * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 100) + iVar12 * 0xc)" ( (binary_expression "*(int *)(iVar4 + 100) + iVar12 * 0xc" (pointer_expression "*(int *)(iVar4 + 100)" * (cast_expression "(int *)(iVar4 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 100)" ( (binary_expression "iVar4 + 100" identifier + number_literal) )))) + (binary_expression "iVar12 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (if_statement "if (*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555) {\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }" if (parenthesized_expression "(*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555)" ( (binary_expression "*piVar14 < (piVar5[1] - iVar2 >> 3) * -0x55555555" (pointer_expression "*piVar14" * identifier) < (binary_expression "(piVar5[1] - iVar2 >> 3) * -0x55555555" (parenthesized_expression "(piVar5[1] - iVar2 >> 3)" ( (binary_expression "piVar5[1] - iVar2 >> 3" (binary_expression "piVar5[1] - iVar2" (subscript_expression "piVar5[1]" identifier [ number_literal ]) - identifier) >> number_literal) )) * number_literal)) )) (compound_statement "{\n          if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }\n          (**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);\n          if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }\n          (**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));\n          if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }\n          (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n        }" { (if_statement "if (*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0) {\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }" if (parenthesized_expression "(*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0)" ( (binary_expression "*(int *)(iVar2 + *piVar14 * 0x18 + 4) != 0" (pointer_expression "*(int *)(iVar2 + *piVar14 * 0x18 + 4)" * (cast_expression "(int *)(iVar2 + *piVar14 * 0x18 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + *piVar14 * 0x18 + 4)" ( (binary_expression "iVar2 + *piVar14 * 0x18 + 4" (binary_expression "iVar2 + *piVar14 * 0x18" identifier + (binary_expression "*piVar14 * 0x18" (pointer_expression "*piVar14" * identifier) * number_literal)) + number_literal) )))) != number_literal) )) (compound_statement "{\n            (**(code **)(pcVar19 + 0x1db410))();\n            if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);\n          }" { (expression_statement "(**(code **)(pcVar19 + 0x1db410))();" (call_expression "(**(code **)(pcVar19 + 0x1db410))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db410))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db410)" * (pointer_expression "*(code **)(pcVar19 + 0x1db410)" * (cast_expression "(code **)(pcVar19 + 0x1db410)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db410)" ( (binary_expression "pcVar19 + 0x1db410" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (piVar9[1] == 0x7fffffff) goto LAB_002e6d28;" if (parenthesized_expression "(piVar9[1] == 0x7fffffff)" ( (binary_expression "piVar9[1] == 0x7fffffff" (subscript_expression "piVar9[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_002e6d28;" goto statement_identifier ;)) (expression_statement "(**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1);" (call_expression "(**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db410))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db410)" * (pointer_expression "*(code **)(pcVar19 + 0x1db410)" * (cast_expression "(code **)(pcVar19 + 0x1db410)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db410)" ( (binary_expression "pcVar19 + 0x1db410" identifier + number_literal) ))))) )) (argument_list "(piVar9,*(int *)(pcVar19 + 0x1daec4) + -300,1)" ( identifier , (binary_expression "*(int *)(pcVar19 + 0x1daec4) + -300" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2]);" (call_expression "(**(code **)(pcVar19 + 0x1db410))(piVar9,piVar14[1],piVar14[2])" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db410))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db410)" * (pointer_expression "*(code **)(pcVar19 + 0x1db410)" * (cast_expression "(code **)(pcVar19 + 0x1db410)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db410)" ( (binary_expression "pcVar19 + 0x1db410" identifier + number_literal) ))))) )) (argument_list "(piVar9,piVar14[1],piVar14[2])" ( identifier , (subscript_expression "piVar14[1]" identifier [ number_literal ]) , (subscript_expression "piVar14[2]" identifier [ number_literal ]) ))) ;) (if_statement "if (piVar9[1] == 0) {\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }" if (parenthesized_expression "(piVar9[1] == 0)" ( (binary_expression "piVar9[1] == 0" (subscript_expression "piVar9[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            (**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);\n          }" { (expression_statement "(**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9);" (call_expression "(**(code **)(pcVar19 + 0x1db648))(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db648))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db648)" * (pointer_expression "*(code **)(pcVar19 + 0x1db648)" * (cast_expression "(code **)(pcVar19 + 0x1db648)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db648)" ( (binary_expression "pcVar19 + 0x1db648" identifier + number_literal) ))))) )) (argument_list "(piVar9,0,0,*(int *)(pcVar19 + 0x1daff8) + 0x270,9)" ( identifier , number_literal , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1daff8) + 0x270" (pointer_expression "*(int *)(pcVar19 + 0x1daff8)" * (cast_expression "(int *)(pcVar19 + 0x1daff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daff8)" ( (binary_expression "pcVar19 + 0x1daff8" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10));" (call_expression "(**(code **)(pcVar19 + 0x1df03c))\n                    (auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10))" (parenthesized_expression "(**(code **)(pcVar19 + 0x1df03c))" ( (pointer_expression "**(code **)(pcVar19 + 0x1df03c)" * (pointer_expression "*(code **)(pcVar19 + 0x1df03c)" * (cast_expression "(code **)(pcVar19 + 0x1df03c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1df03c)" ( (binary_expression "pcVar19 + 0x1df03c" identifier + number_literal) ))))) )) (argument_list "(auStack_c8,0x40,*(int *)(pcVar19 + 0x1daff8) + 0x1264,\n                     *(undefined4 *)(iVar11 + 0x10))" ( identifier , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1daff8) + 0x1264" (pointer_expression "*(int *)(pcVar19 + 0x1daff8)" * (cast_expression "(int *)(pcVar19 + 0x1daff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daff8)" ( (binary_expression "pcVar19 + 0x1daff8" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined4 *)(iVar11 + 0x10)" * (cast_expression "(undefined4 *)(iVar11 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) ))) ;) (if_statement "if (piVar9[1] != 0x7fffffff) {\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }" if (parenthesized_expression "(piVar9[1] != 0x7fffffff)" ( (binary_expression "piVar9[1] != 0x7fffffff" (subscript_expression "piVar9[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            (**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);\n            uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);\n            if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }\n            (**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);\n          }" { (expression_statement "(**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1);" (call_expression "(**(code **)(pcVar19 + 0x1db410))(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db410))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db410)" * (pointer_expression "*(code **)(pcVar19 + 0x1db410)" * (cast_expression "(code **)(pcVar19 + 0x1db410)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db410)" ( (binary_expression "pcVar19 + 0x1db410" identifier + number_literal) ))))) )) (argument_list "(piVar9,*(int *)(pcVar19 + 0x1da884) + -0x5a4c,1)" ( identifier , (binary_expression "*(int *)(pcVar19 + 0x1da884) + -0x5a4c" (pointer_expression "*(int *)(pcVar19 + 0x1da884)" * (cast_expression "(int *)(pcVar19 + 0x1da884)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1da884)" ( (binary_expression "pcVar19 + 0x1da884" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8);" (assignment_expression "uVar3 = (**(code **)(pcVar19 + 0x1df144))(auStack_c8)" identifier = (call_expression "(**(code **)(pcVar19 + 0x1df144))(auStack_c8)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1df144))" ( (pointer_expression "**(code **)(pcVar19 + 0x1df144)" * (pointer_expression "*(code **)(pcVar19 + 0x1df144)" * (cast_expression "(code **)(pcVar19 + 0x1df144)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1df144)" ( (binary_expression "pcVar19 + 0x1df144" identifier + number_literal) ))))) )) (argument_list "(auStack_c8)" ( identifier )))) ;) (if_statement "if (uVar3 <= 0x7fffffffU - piVar9[1]) {\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }" if (parenthesized_expression "(uVar3 <= 0x7fffffffU - piVar9[1])" ( (binary_expression "uVar3 <= 0x7fffffffU - piVar9[1]" identifier <= (binary_expression "0x7fffffffU - piVar9[1]" number_literal - (subscript_expression "piVar9[1]" identifier [ number_literal ]))) )) (compound_statement "{\n              (**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);\n              return (uint)piVar9;\n            }" { (expression_statement "(**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3);" (call_expression "(**(code **)(pcVar19 + 0x1db410))(piVar9,auStack_c8,uVar3)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db410))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db410)" * (pointer_expression "*(code **)(pcVar19 + 0x1db410)" * (cast_expression "(code **)(pcVar19 + 0x1db410)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db410)" ( (binary_expression "pcVar19 + 0x1db410" identifier + number_literal) ))))) )) (argument_list "(piVar9,auStack_c8,uVar3)" ( identifier , identifier , identifier ))) ;) (return_statement "return (uint)piVar9;" return (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);" (call_expression "(**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db41c))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db41c)" * (pointer_expression "*(code **)(pcVar19 + 0x1db41c)" * (cast_expression "(code **)(pcVar19 + 0x1db41c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db41c)" ( (binary_expression "pcVar19 + 0x1db41c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar19 + 0x1da824) + 0x446c)" ( (binary_expression "*(int *)(pcVar19 + 0x1da824) + 0x446c" (pointer_expression "*(int *)(pcVar19 + 0x1da824)" * (cast_expression "(int *)(pcVar19 + 0x1da824)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1da824)" ( (binary_expression "pcVar19 + 0x1da824" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c);" (call_expression "(**(code **)(pcVar19 + 0x1db41c))(*(int *)(pcVar19 + 0x1da824) + 0x446c)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db41c))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db41c)" * (pointer_expression "*(code **)(pcVar19 + 0x1db41c)" * (cast_expression "(code **)(pcVar19 + 0x1db41c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db41c)" ( (binary_expression "pcVar19 + 0x1db41c" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar19 + 0x1da824) + 0x446c)" ( (binary_expression "*(int *)(pcVar19 + 0x1da824) + 0x446c" (pointer_expression "*(int *)(pcVar19 + 0x1da824)" * (cast_expression "(int *)(pcVar19 + 0x1da824)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1da824)" ( (binary_expression "pcVar19 + 0x1da824" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  );" (call_expression "(**(code **)(pcVar19 + 0x1dafd8))\n                  (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  )" (parenthesized_expression "(**(code **)(pcVar19 + 0x1dafd8))" ( (pointer_expression "**(code **)(pcVar19 + 0x1dafd8)" * (pointer_expression "*(code **)(pcVar19 + 0x1dafd8)" * (cast_expression "(code **)(pcVar19 + 0x1dafd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1dafd8)" ( (binary_expression "pcVar19 + 0x1dafd8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8ea,*(int *)(pcVar19 + 0x1daec4) + 0x739c\n                  )" ( (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x7090" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x739c" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1dafd8))\n                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c);" (call_expression "(**(code **)(pcVar19 + 0x1dafd8))\n                (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1dafd8))" ( (pointer_expression "**(code **)(pcVar19 + 0x1dafd8)" * (pointer_expression "*(code **)(pcVar19 + 0x1dafd8)" * (cast_expression "(code **)(pcVar19 + 0x1dafd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1dafd8)" ( (binary_expression "pcVar19 + 0x1dafd8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e8,*(int *)(pcVar19 + 0x1daec4) + 0x739c)" ( (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x7090" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x739c" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1dafd8))\n              (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e3,*(int *)(pcVar19 + 0x1daec4) + 0x739c);" (call_expression "(**(code **)(pcVar19 + 0x1dafd8))\n              (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e3,*(int *)(pcVar19 + 0x1daec4) + 0x739c)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1dafd8))" ( (pointer_expression "**(code **)(pcVar19 + 0x1dafd8)" * (pointer_expression "*(code **)(pcVar19 + 0x1dafd8)" * (cast_expression "(code **)(pcVar19 + 0x1dafd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1dafd8)" ( (binary_expression "pcVar19 + 0x1dafd8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e3,*(int *)(pcVar19 + 0x1daec4) + 0x739c)" ( (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x7090" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x739c" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1dafd8))\n            (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e1,*(int *)(pcVar19 + 0x1daec4) + 0x739c);" (call_expression "(**(code **)(pcVar19 + 0x1dafd8))\n            (*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e1,*(int *)(pcVar19 + 0x1daec4) + 0x739c)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1dafd8))" ( (pointer_expression "**(code **)(pcVar19 + 0x1dafd8)" * (pointer_expression "*(code **)(pcVar19 + 0x1dafd8)" * (cast_expression "(code **)(pcVar19 + 0x1dafd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1dafd8)" ( (binary_expression "pcVar19 + 0x1dafd8" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar19 + 0x1daec4) + 0x7090,0x8e1,*(int *)(pcVar19 + 0x1daec4) + 0x739c)" ( (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x7090" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar19 + 0x1daec4) + 0x739c" (pointer_expression "*(int *)(pcVar19 + 0x1daec4)" * (cast_expression "(int *)(pcVar19 + 0x1daec4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1daec4)" ( (binary_expression "pcVar19 + 0x1daec4" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_002e6d28:\n  iVar2 = *(int *)(pcVar19 + 0x1da824) + 0x446c;" statement_identifier : (expression_statement "iVar2 = *(int *)(pcVar19 + 0x1da824) + 0x446c;" (assignment_expression "iVar2 = *(int *)(pcVar19 + 0x1da824) + 0x446c" identifier = (binary_expression "*(int *)(pcVar19 + 0x1da824) + 0x446c" (pointer_expression "*(int *)(pcVar19 + 0x1da824)" * (cast_expression "(int *)(pcVar19 + 0x1da824)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar19 + 0x1da824)" ( (binary_expression "pcVar19 + 0x1da824" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(pcVar19 + 0x1db41c))();" (call_expression "(**(code **)(pcVar19 + 0x1db41c))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1db41c))" ( (pointer_expression "**(code **)(pcVar19 + 0x1db41c)" * (pointer_expression "*(code **)(pcVar19 + 0x1db41c)" * (cast_expression "(code **)(pcVar19 + 0x1db41c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1db41c)" ( (binary_expression "pcVar19 + 0x1db41c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (piVar9 + 2 != (int *)*piVar9) {\n    (**(code **)(pcVar19 + 0x1da8a4))((int *)*piVar9);\n  }" if (parenthesized_expression "(piVar9 + 2 != (int *)*piVar9)" ( (binary_expression "piVar9 + 2 != (int *)*piVar9" (binary_expression "piVar9 + 2" identifier + number_literal) != (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) )) (compound_statement "{\n    (**(code **)(pcVar19 + 0x1da8a4))((int *)*piVar9);\n  }" { (expression_statement "(**(code **)(pcVar19 + 0x1da8a4))((int *)*piVar9);" (call_expression "(**(code **)(pcVar19 + 0x1da8a4))((int *)*piVar9)" (parenthesized_expression "(**(code **)(pcVar19 + 0x1da8a4))" ( (pointer_expression "**(code **)(pcVar19 + 0x1da8a4)" * (pointer_expression "*(code **)(pcVar19 + 0x1da8a4)" * (cast_expression "(code **)(pcVar19 + 0x1da8a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1da8a4)" ( (binary_expression "pcVar19 + 0x1da8a4" identifier + number_literal) ))))) )) (argument_list "((int *)*piVar9)" ( (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier)) ))) ;) })) (expression_statement "(**(code **)(pcVar19 + 0x1da870))();" (call_expression "(**(code **)(pcVar19 + 0x1da870))()" (parenthesized_expression "(**(code **)(pcVar19 + 0x1da870))" ( (pointer_expression "**(code **)(pcVar19 + 0x1da870)" * (pointer_expression "*(code **)(pcVar19 + 0x1da870)" * (cast_expression "(code **)(pcVar19 + 0x1da870)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar19 + 0x1da870)" ( (binary_expression "pcVar19 + 0x1da870" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return (uint)(*(int *)(iVar2 + 0x5c) != 0);" return (call_expression "(uint)(*(int *)(iVar2 + 0x5c) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar2 + 0x5c) != 0)" ( (binary_expression "*(int *)(iVar2 + 0x5c) != 0" (pointer_expression "*(int *)(iVar2 + 0x5c)" * (cast_expression "(int *)(iVar2 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x5c)" ( (binary_expression "iVar2 + 0x5c" identifier + number_literal) )))) != number_literal) ))) ;) (ERROR "}" }))
(translation_unit "uint FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)\n\n{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}\n\n" (function_definition "uint FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)\n\n{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}" type_identifier (function_declarator "FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "longlong lVar12;" type_identifier identifier ;) (declaration "longlong lVar13;" type_identifier identifier ;) (expression_statement "lVar13 = CONCAT44(param_3,param_4);" (assignment_expression "lVar13 = CONCAT44(param_3,param_4)" identifier = (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = param_1 + 0x1c;" (assignment_expression "iVar8 = param_1 + 0x1c" identifier = (binary_expression "param_1 + 0x1c" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_advance_004c2a14)(iVar8);" (call_expression "(*(code *)PTR_advance_004c2a14)(iVar8)" (parenthesized_expression "(*(code *)PTR_advance_004c2a14)" ( (pointer_expression "*(code *)PTR_advance_004c2a14" * (cast_expression "(code *)PTR_advance_004c2a14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);" (assignment_expression "lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8)" identifier = (call_expression "(*(code *)PTR_next_offset_004c2a18)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_offset_004c2a18)" ( (pointer_expression "*(code *)PTR_next_offset_004c2a18" * (cast_expression "(code *)PTR_next_offset_004c2a18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (if_statement "if (lVar12 != lVar13) {\n    return 0;\n  }" if (parenthesized_expression "(lVar12 != lVar13)" ( (binary_expression "lVar12 != lVar13" identifier != identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);" (assignment_expression "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8)" identifier = (call_expression "(*(code *)PTR_next_symndx_004c2a3c)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_symndx_004c2a3c)" ( (pointer_expression "*(code *)PTR_next_symndx_004c2a3c" * (cast_expression "(code *)PTR_next_symndx_004c2a3c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = (iVar2 + 1) * 0x10;" (assignment_expression "uVar3 = (iVar2 + 1) * 0x10" identifier = (binary_expression "(iVar2 + 1) * 0x10" (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }" if (parenthesized_expression "((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14)))))" ( (binary_expression "(-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))" (parenthesized_expression "(-1 < *(int *)(param_1 + 0x10))" ( (binary_expression "-1 < *(int *)(param_1 + 0x10)" number_literal < (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) && (parenthesized_expression "((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))" ( (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14)))" ( (binary_expression "*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))" (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(uVar3 <= *(uint *)(param_1 + 0x14))" ( (binary_expression "uVar3 <= *(uint *)(param_1 + 0x14)" identifier <= (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }" { (expression_statement "iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10)" identifier = (binary_expression "*(int *)(param_1 + 8) + (uVar3 - 0x10)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (parenthesized_expression "(uVar3 - 0x10)" ( (binary_expression "uVar3 - 0x10" identifier - number_literal) )))) ;) (expression_statement "uVar1 = *(ushort *)(iVar4 + 0xe);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0xe)" identifier = (pointer_expression "*(ushort *)(iVar4 + 0xe)" * (cast_expression "(ushort *)(iVar4 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xe)" ( (binary_expression "iVar4 + 0xe" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(uint *)(iVar4 + 4);" (assignment_expression "uVar10 = *(uint *)(iVar4 + 4)" identifier = (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);" (assignment_expression "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" identifier = (binary_expression "(uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" (binary_expression "(uVar1 & 0xff) << 8" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) << number_literal) | (call_expression "(uint)(uVar1 >> 8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 >> 8)" ( (binary_expression "uVar1 >> 8" identifier >> number_literal) ))))) ;) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }" if (parenthesized_expression "(0xfeff < uVar3)" ( (binary_expression "0xfeff < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }" { (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 != 0xffff)" ( (binary_expression "uVar3 != 0xffff" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar6 = *(int **)(param_1 + 4);" (assignment_expression "piVar6 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = piVar6[0xc];" (assignment_expression "iVar4 = piVar6[0xc]" identifier = (subscript_expression "piVar6[0xc]" identifier [ number_literal ])) ;) (if_statement "if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }" { (expression_statement "iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);" (assignment_expression "iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6)" identifier = (call_expression "(**(code **)(*piVar6 + 0x6c))(piVar6)" (parenthesized_expression "(**(code **)(*piVar6 + 0x6c))" ( (pointer_expression "**(code **)(*piVar6 + 0x6c)" * (pointer_expression "*(code **)(*piVar6 + 0x6c)" * (cast_expression "(code **)(*piVar6 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar6 + 0x6c)" ( (binary_expression "*piVar6 + 0x6c" (pointer_expression "*piVar6" * identifier) + number_literal) ))))) )) (argument_list "(piVar6)" ( identifier )))) ;) (expression_statement "piVar6[0xc] = iVar4;" (assignment_expression "piVar6[0xc] = iVar4" (subscript_expression "piVar6[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);" (assignment_expression "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2)" identifier = (call_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2)" (parenthesized_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)" ( (pointer_expression "*(code *)PTR_sym_xindex_to_shndx_004c1ab0" * (cast_expression "(code *)PTR_sym_xindex_to_shndx_004c1ab0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4,piVar6,iVar2)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;" (assignment_expression "iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" identifier = (binary_expression "(((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10)" ( (binary_expression "(uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10" (binary_expression "(uVar10 >> 0x10) << 0x18" (parenthesized_expression "(uVar10 >> 0x10)" ( (binary_expression "uVar10 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar10 >> 0x18) << 0x10" (parenthesized_expression "(uVar10 >> 0x18)" ( (binary_expression "uVar10 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff)" ( (binary_expression "(uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff" (binary_expression "(uVar10 & 0xff) << 8" (parenthesized_expression "(uVar10 & 0xff)" ( (binary_expression "uVar10 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar10 >> 8 & 0xff" (binary_expression "uVar10 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal))) ;) (if_statement "if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) == 4)" ( (binary_expression "*(int *)(param_1 + 0x18) == 4" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }" { (expression_statement "(*(code *)PTR_next_addend_004c2a40)(iVar8);" (call_expression "(*(code *)PTR_next_addend_004c2a40)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_addend_004c2a40)" ( (pointer_expression "*(code *)PTR_next_addend_004c2a40" * (cast_expression "(code *)PTR_next_addend_004c2a40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "iVar2 = iVar2 + extraout_v1;" (assignment_expression "iVar2 = iVar2 + extraout_v1" identifier = (binary_expression "iVar2 + extraout_v1" identifier + identifier)) ;) })) (expression_statement "param_5[1] = iVar2;" (assignment_expression "param_5[1] = iVar2" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" * identifier) = number_literal) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;" (assignment_expression "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x746c" identifier + number_literal)) ;) (expression_statement "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;" (assignment_expression "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7090" identifier + number_literal)) ;) (expression_statement "puVar11 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar11 = PTR_do_gold_unreachable_004c1a30" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5,0x3d)" ( identifier , number_literal ))) ;) (expression_statement "puVar9 = puVar5 + 0x1c;" (assignment_expression "puVar9 = puVar5 + 0x1c" identifier = (binary_expression "puVar5 + 0x1c" identifier + number_literal)) ;) (expression_statement "(**(code **)(puVar11 + 0x1dc184))(puVar9);" (call_expression "(**(code **)(puVar11 + 0x1dc184))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc184))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc184)" * (pointer_expression "*(code **)(puVar11 + 0x1dc184)" * (cast_expression "(code **)(puVar11 + 0x1dc184)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc184)" ( (binary_expression "puVar11 + 0x1dc184" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier ))) ;) (expression_statement "lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);" (assignment_expression "lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9)" identifier = (call_expression "(**(code **)(puVar11 + 0x1dc188))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc188))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc188)" * (pointer_expression "*(code **)(puVar11 + 0x1dc188)" * (cast_expression "(code **)(puVar11 + 0x1dc188)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc188)" ( (binary_expression "puVar11 + 0x1dc188" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier )))) ;) (if_statement "if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }" if (parenthesized_expression "(lVar13 != CONCAT44(puVar7,param_4))" ( (binary_expression "lVar13 != CONCAT44(puVar7,param_4)" identifier != (call_expression "CONCAT44(puVar7,param_4)" identifier (argument_list "(puVar7,param_4)" ( identifier , identifier )))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);" (assignment_expression "iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9)" identifier = (call_expression "(**(code **)(puVar11 + 0x1dc1c0))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc1c0))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc1c0)" * (pointer_expression "*(code **)(puVar11 + 0x1dc1c0)" * (cast_expression "(code **)(puVar11 + 0x1dc1c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc1c0)" ( (binary_expression "puVar11 + 0x1dc1c0" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "uVar3 = (iVar8 + 1) * 0x18;" (assignment_expression "uVar3 = (iVar8 + 1) * 0x18" identifier = (binary_expression "(iVar8 + 1) * 0x18" (parenthesized_expression "(iVar8 + 1)" ( (binary_expression "iVar8 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }" if (parenthesized_expression "((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14)))))" ( (binary_expression "(-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))" (parenthesized_expression "(-1 < *(int *)(puVar5 + 0x10))" ( (binary_expression "-1 < *(int *)(puVar5 + 0x10)" number_literal < (pointer_expression "*(int *)(puVar5 + 0x10)" * (cast_expression "(int *)(puVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x10)" ( (binary_expression "puVar5 + 0x10" identifier + number_literal) ))))) )) && (parenthesized_expression "((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))" ( (parenthesized_expression "(*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14)))" ( (binary_expression "*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))" (binary_expression "*(int *)(puVar5 + 0x10) != 0" (pointer_expression "*(int *)(puVar5 + 0x10)" * (cast_expression "(int *)(puVar5 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x10)" ( (binary_expression "puVar5 + 0x10" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(uVar3 <= *(uint *)(puVar5 + 0x14))" ( (binary_expression "uVar3 <= *(uint *)(puVar5 + 0x14)" identifier <= (pointer_expression "*(uint *)(puVar5 + 0x14)" * (cast_expression "(uint *)(puVar5 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x14)" ( (binary_expression "puVar5 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }" { (expression_statement "iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);" (assignment_expression "iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18)" identifier = (binary_expression "*(int *)(puVar5 + 8) + (uVar3 - 0x18)" (pointer_expression "*(int *)(puVar5 + 8)" * (cast_expression "(int *)(puVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 8)" ( (binary_expression "puVar5 + 8" identifier + number_literal) )))) + (parenthesized_expression "(uVar3 - 0x18)" ( (binary_expression "uVar3 - 0x18" identifier - number_literal) )))) ;) (expression_statement "uVar3 = (uint)*(ushort *)(iVar2 + 6);" (assignment_expression "uVar3 = (uint)*(ushort *)(iVar2 + 6)" identifier = (binary_expression "(uint)*(ushort *)(iVar2 + 6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar2 + 6)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 6)" ( (binary_expression "iVar2 + 6" identifier + number_literal) ))))) ;) (expression_statement "lVar13 = *(longlong *)(iVar2 + 8);" (assignment_expression "lVar13 = *(longlong *)(iVar2 + 8)" identifier = (pointer_expression "*(longlong *)(iVar2 + 8)" * (cast_expression "(longlong *)(iVar2 + 8)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }" if (parenthesized_expression "(0xfeff < uVar3)" ( (binary_expression "0xfeff < uVar3" number_literal < identifier) )) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }" { (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 != 0xffff)" ( (binary_expression "uVar3 != 0xffff" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar6 = *(int **)(puVar5 + 4);" (assignment_expression "piVar6 = *(int **)(puVar5 + 4)" identifier = (pointer_expression "*(int **)(puVar5 + 4)" * (cast_expression "(int **)(puVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = piVar6[0xc];" (assignment_expression "iVar2 = piVar6[0xc]" identifier = (subscript_expression "piVar6[0xc]" identifier [ number_literal ])) ;) (if_statement "if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }" { (expression_statement "iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);" (assignment_expression "iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6)" identifier = (call_expression "(**(code **)(*piVar6 + 0x6c))(piVar6)" (parenthesized_expression "(**(code **)(*piVar6 + 0x6c))" ( (pointer_expression "**(code **)(*piVar6 + 0x6c)" * (pointer_expression "*(code **)(*piVar6 + 0x6c)" * (cast_expression "(code **)(*piVar6 + 0x6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar6 + 0x6c)" ( (binary_expression "*piVar6 + 0x6c" (pointer_expression "*piVar6" * identifier) + number_literal) ))))) )) (argument_list "(piVar6)" ( identifier )))) ;) (expression_statement "piVar6[0xc] = iVar2;" (assignment_expression "piVar6[0xc] = iVar2" (subscript_expression "piVar6[0xc]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);" (assignment_expression "uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8)" identifier = (call_expression "(**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8)" (parenthesized_expression "(**(code **)(puVar11 + 0x1db22c))" ( (pointer_expression "**(code **)(puVar11 + 0x1db22c)" * (pointer_expression "*(code **)(puVar11 + 0x1db22c)" * (cast_expression "(code **)(puVar11 + 0x1db22c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1db22c)" ( (binary_expression "puVar11 + 0x1db22c" identifier + number_literal) ))))) )) (argument_list "(iVar2,piVar6,iVar8)" ( identifier , identifier , identifier )))) ;) })) (if_statement "if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }" if (parenthesized_expression "(*(int *)(puVar5 + 0x18) == 4)" ( (binary_expression "*(int *)(puVar5 + 0x18) == 4" (pointer_expression "*(int *)(puVar5 + 0x18)" * (cast_expression "(int *)(puVar5 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 0x18)" ( (binary_expression "puVar5 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }" { (expression_statement "lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);" (assignment_expression "lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9)" identifier = (call_expression "(**(code **)(puVar11 + 0x1dc1c4))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc1c4))" ( (pointer_expression "**(code **)(puVar11 + 0x1dc1c4)" * (pointer_expression "*(code **)(puVar11 + 0x1dc1c4)" * (cast_expression "(code **)(puVar11 + 0x1dc1c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1dc1c4)" ( (binary_expression "puVar11 + 0x1dc1c4" identifier + number_literal) ))))) )) (argument_list "(puVar9)" ( identifier )))) ;) (expression_statement "lVar13 = lVar12 + lVar13;" (assignment_expression "lVar13 = lVar12 + lVar13" identifier = (binary_expression "lVar12 + lVar13" identifier + identifier)) ;) })) (labeled_statement "gold::Position_dependent_options::default_options_._12816_8_ = lVar13;" statement_identifier : (ERROR ":" :) (labeled_statement "Position_dependent_options::default_options_._12816_8_ = lVar13;" statement_identifier : (ERROR ":" :) (expression_statement "default_options_._12816_8_ = lVar13;" (assignment_expression "default_options_._12816_8_ = lVar13" (field_expression "default_options_._12816_8_" identifier . field_identifier) = identifier) ;))) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);" (assignment_expression "uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" identifier = (call_expression "(**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" (parenthesized_expression "(**(code **)(puVar11 + 0x1db1ac))" ( (pointer_expression "**(code **)(puVar11 + 0x1db1ac)" * (pointer_expression "*(code **)(puVar11 + 0x1db1ac)" * (cast_expression "(code **)(puVar11 + 0x1db1ac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar11 + 0x1db1ac)" ( (binary_expression "puVar11 + 0x1db1ac" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" ( (binary_expression "*(int *)(puVar11 + 0x1db098) + 0x7090" (pointer_expression "*(int *)(puVar11 + 0x1db098)" * (cast_expression "(int *)(puVar11 + 0x1db098)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x1db098)" ( (binary_expression "puVar11 + 0x1db098" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar11 + 0x1db098) + 0x747c" (pointer_expression "*(int *)(puVar11 + 0x1db098)" * (cast_expression "(int *)(puVar11 + 0x1db098)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 0x1db098)" ( (binary_expression "puVar11 + 0x1db098" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT)) )) >> LIT) )) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | (binary_expression (binary_expression IDENT >> LIT) & LIT)) )) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (return_statement return IDENT ;) })))
(function_definition "uint FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)\n\n{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}" (type_identifier "uint") (function_declarator "FUN_002e66c4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)" (identifier "FUN_002e66c4") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 *param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 *param_5" (type_identifier "undefined4") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  ushort uVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int extraout_v1;\n  undefined *puVar5;\n  int *piVar6;\n  undefined *puVar7;\n  int iVar8;\n  undefined *puVar9;\n  uint uVar10;\n  undefined *puVar11;\n  longlong lVar12;\n  longlong lVar13;\n  \n  lVar13 = CONCAT44(param_3,param_4);\n  iVar8 = param_1 + 0x1c;\n  (*(code *)PTR_advance_004c2a14)(iVar8);\n  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);\n  if (lVar12 != lVar13) {\n    return 0;\n  }\n  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);\n  uVar3 = (iVar2 + 1) * 0x10;\n  if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }\n  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;\n  puVar11 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);\n  puVar9 = puVar5 + 0x1c;\n  (**(code **)(puVar11 + 0x1dc184))(puVar9);\n  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);\n  if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }\n  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);\n  uVar3 = (iVar8 + 1) * 0x18;\n  if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }\n  uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);\n  return uVar3;\n}" ({ "{") (declaration "ushort uVar1;" (type_identifier "ushort") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int extraout_v1;" (primitive_type "int") (identifier "extraout_v1") (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined *puVar9;" (type_identifier "undefined") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined *puVar11;" (type_identifier "undefined") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "longlong lVar12;" (type_identifier "longlong") (identifier "lVar12") (; ";")) (declaration "longlong lVar13;" (type_identifier "longlong") (identifier "lVar13") (; ";")) (expression_statement "lVar13 = CONCAT44(param_3,param_4);" (assignment_expression "lVar13 = CONCAT44(param_3,param_4)" (identifier "lVar13") (= "=") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "iVar8 = param_1 + 0x1c;" (assignment_expression "iVar8 = param_1 + 0x1c" (identifier "iVar8") (= "=") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "(*(code *)PTR_advance_004c2a14)(iVar8);" (call_expression "(*(code *)PTR_advance_004c2a14)(iVar8)" (parenthesized_expression "(*(code *)PTR_advance_004c2a14)" (( "(") (pointer_expression "*(code *)PTR_advance_004c2a14" (* "*") (cast_expression "(code *)PTR_advance_004c2a14" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_advance_004c2a14"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);" (assignment_expression "lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8)" (identifier "lVar12") (= "=") (call_expression "(*(code *)PTR_next_offset_004c2a18)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_offset_004c2a18)" (( "(") (pointer_expression "*(code *)PTR_next_offset_004c2a18" (* "*") (cast_expression "(code *)PTR_next_offset_004c2a18" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_next_offset_004c2a18"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (if_statement "if (lVar12 != lVar13) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(lVar12 != lVar13)" (( "(") (binary_expression "lVar12 != lVar13" (identifier "lVar12") (!= "!=") (identifier "lVar13")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);" (assignment_expression "iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_next_symndx_004c2a3c)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_symndx_004c2a3c)" (( "(") (pointer_expression "*(code *)PTR_next_symndx_004c2a3c" (* "*") (cast_expression "(code *)PTR_next_symndx_004c2a3c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_next_symndx_004c2a3c"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "uVar3 = (iVar2 + 1) * 0x10;" (assignment_expression "uVar3 = (iVar2 + 1) * 0x10" (identifier "uVar3") (= "=") (binary_expression "(iVar2 + 1) * 0x10" (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x10"))) (; ";")) (if_statement "if ((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }" (if "if") (parenthesized_expression "((-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14)))))" (( "(") (binary_expression "(-1 < *(int *)(param_1 + 0x10)) &&\n     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))" (parenthesized_expression "(-1 < *(int *)(param_1 + 0x10))" (( "(") (binary_expression "-1 < *(int *)(param_1 + 0x10)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))" (( "(") (parenthesized_expression "(*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14)))" (( "(") (binary_expression "*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))" (binary_expression "*(int *)(param_1 + 0x10) != 0" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(uVar3 <= *(uint *)(param_1 + 0x14))" (( "(") (binary_expression "uVar3 <= *(uint *)(param_1 + 0x14)" (identifier "uVar3") (<= "<=") (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);\n    uVar1 = *(ushort *)(iVar4 + 0xe);\n    uVar10 = *(uint *)(iVar4 + 4);\n    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }\n    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;\n    if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }\n    param_5[1] = iVar2;\n    *param_5 = 0;\n    return uVar3;\n  }" ({ "{") (expression_statement "iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10)" (identifier "iVar4") (= "=") (binary_expression "*(int *)(param_1 + 8) + (uVar3 - 0x10)" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (parenthesized_expression "(uVar3 - 0x10)" (( "(") (binary_expression "uVar3 - 0x10" (identifier "uVar3") (- "-") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uVar1 = *(ushort *)(iVar4 + 0xe);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0xe)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(iVar4 + 0xe)" (* "*") (cast_expression "(ushort *)(iVar4 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xe)" (( "(") (binary_expression "iVar4 + 0xe" (identifier "iVar4") (+ "+") (number_literal "0xe")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(uint *)(iVar4 + 4);" (assignment_expression "uVar10 = *(uint *)(iVar4 + 4)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(iVar4 + 4)" (* "*") (cast_expression "(uint *)(iVar4 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);" (assignment_expression "uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" (identifier "uVar3") (= "=") (binary_expression "(uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)" (binary_expression "(uVar1 & 0xff) << 8" (parenthesized_expression "(uVar1 & 0xff)" (( "(") (binary_expression "uVar1 & 0xff" (identifier "uVar1") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) (| "|") (call_expression "(uint)(uVar1 >> 8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 >> 8)" (( "(") (binary_expression "uVar1 >> 8" (identifier "uVar1") (>> ">>") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }" (if "if") (parenthesized_expression "(0xfeff < uVar3)" (( "(") (binary_expression "0xfeff < uVar3" (number_literal "0xfeff") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(param_1 + 4);\n      iVar4 = piVar6[0xc];\n      if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }\n      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);\n    }" ({ "{") (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(uVar3 != 0xffff)" (( "(") (binary_expression "uVar3 != 0xffff" (identifier "uVar3") (!= "!=") (number_literal "0xffff")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "piVar6 = *(int **)(param_1 + 4);" (assignment_expression "piVar6 = *(int **)(param_1 + 4)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar4 = piVar6[0xc];" (assignment_expression "iVar4 = piVar6[0xc]" (identifier "iVar4") (= "=") (subscript_expression "piVar6[0xc]" (identifier "piVar6") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (if_statement "if (iVar4 == 0) {\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar4;\n      }" ({ "{") (expression_statement "iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);" (assignment_expression "iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(*piVar6 + 0x6c))(piVar6)" (parenthesized_expression "(**(code **)(*piVar6 + 0x6c))" (( "(") (pointer_expression "**(code **)(*piVar6 + 0x6c)" (* "*") (pointer_expression "*(code **)(*piVar6 + 0x6c)" (* "*") (cast_expression "(code **)(*piVar6 + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar6 + 0x6c)" (( "(") (binary_expression "*piVar6 + 0x6c" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "0x6c")) () ")"))))) () ")")) (argument_list "(piVar6)" (( "(") (identifier "piVar6") () ")")))) (; ";")) (expression_statement "piVar6[0xc] = iVar4;" (assignment_expression "piVar6[0xc] = iVar4" (subscript_expression "piVar6[0xc]" (identifier "piVar6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (} "}"))) (expression_statement "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);" (assignment_expression "uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2)" (parenthesized_expression "(*(code *)PTR_sym_xindex_to_shndx_004c1ab0)" (( "(") (pointer_expression "*(code *)PTR_sym_xindex_to_shndx_004c1ab0" (* "*") (cast_expression "(code *)PTR_sym_xindex_to_shndx_004c1ab0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sym_xindex_to_shndx_004c1ab0"))) () ")")) (argument_list "(iVar4,piVar6,iVar2)" (( "(") (identifier "iVar4") (, ",") (identifier "piVar6") (, ",") (identifier "iVar2") () ")")))) (; ";")) (} "}"))) (expression_statement "iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;" (assignment_expression "iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" (identifier "iVar2") (= "=") (binary_expression "(((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +\n            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10)" (( "(") (binary_expression "((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10)" (( "(") (binary_expression "(uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10" (binary_expression "(uVar10 >> 0x10) << 0x18" (parenthesized_expression "(uVar10 >> 0x10)" (( "(") (binary_expression "uVar10 >> 0x10" (identifier "uVar10") (>> ">>") (number_literal "0x10")) () ")")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uVar10 >> 0x18) << 0x10" (parenthesized_expression "(uVar10 >> 0x18)" (( "(") (binary_expression "uVar10 >> 0x18" (identifier "uVar10") (>> ">>") (number_literal "0x18")) () ")")) (<< "<<") (number_literal "0x10"))) () ")")) (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff)" (( "(") (binary_expression "(uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff" (binary_expression "(uVar10 & 0xff) << 8" (parenthesized_expression "(uVar10 & 0xff)" (( "(") (binary_expression "uVar10 & 0xff" (identifier "uVar10") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar10 >> 8 & 0xff" (binary_expression "uVar10 >> 8" (identifier "uVar10") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) () ")")) (* "*") (number_literal "0x10000")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x18) == 4) {\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) == 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) == 4" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "4")) () ")")) (compound_statement "{\n      (*(code *)PTR_next_addend_004c2a40)(iVar8);\n      iVar2 = iVar2 + extraout_v1;\n    }" ({ "{") (expression_statement "(*(code *)PTR_next_addend_004c2a40)(iVar8);" (call_expression "(*(code *)PTR_next_addend_004c2a40)(iVar8)" (parenthesized_expression "(*(code *)PTR_next_addend_004c2a40)" (( "(") (pointer_expression "*(code *)PTR_next_addend_004c2a40" (* "*") (cast_expression "(code *)PTR_next_addend_004c2a40" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_next_addend_004c2a40"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "iVar2 = iVar2 + extraout_v1;" (assignment_expression "iVar2 = iVar2 + extraout_v1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + extraout_v1" (identifier "iVar2") (+ "+") (identifier "extraout_v1"))) (; ";")) (} "}"))) (expression_statement "param_5[1] = iVar2;" (assignment_expression "param_5[1] = iVar2" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "*param_5 = 0;" (assignment_expression "*param_5 = 0" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (number_literal "0")) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;" (assignment_expression "puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c" (identifier "puVar7") (= "=") (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x746c" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "0x746c"))) (; ";")) (expression_statement "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;" (assignment_expression "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090" (identifier "puVar5") (= "=") (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7090" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "0x7090"))) (; ";")) (expression_statement "puVar11 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar11 = PTR_do_gold_unreachable_004c1a30" (identifier "puVar11") (= "=") (identifier "PTR_do_gold_unreachable_004c1a30")) (; ";")) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004c1a30"))) () ")")) (argument_list "(puVar5,0x3d)" (( "(") (identifier "puVar5") (, ",") (number_literal "0x3d") () ")"))) (; ";")) (expression_statement "puVar9 = puVar5 + 0x1c;" (assignment_expression "puVar9 = puVar5 + 0x1c" (identifier "puVar9") (= "=") (binary_expression "puVar5 + 0x1c" (identifier "puVar5") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "(**(code **)(puVar11 + 0x1dc184))(puVar9);" (call_expression "(**(code **)(puVar11 + 0x1dc184))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc184))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x1dc184)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x1dc184)" (* "*") (cast_expression "(code **)(puVar11 + 0x1dc184)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x1dc184)" (( "(") (binary_expression "puVar11 + 0x1dc184" (identifier "puVar11") (+ "+") (number_literal "0x1dc184")) () ")"))))) () ")")) (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")"))) (; ";")) (expression_statement "lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);" (assignment_expression "lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9)" (identifier "lVar13") (= "=") (call_expression "(**(code **)(puVar11 + 0x1dc188))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc188))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x1dc188)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x1dc188)" (* "*") (cast_expression "(code **)(puVar11 + 0x1dc188)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x1dc188)" (( "(") (binary_expression "puVar11 + 0x1dc188" (identifier "puVar11") (+ "+") (number_literal "0x1dc188")) () ")"))))) () ")")) (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")")))) (; ";")) (if_statement "if (lVar13 != CONCAT44(puVar7,param_4)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(lVar13 != CONCAT44(puVar7,param_4))" (( "(") (binary_expression "lVar13 != CONCAT44(puVar7,param_4)" (identifier "lVar13") (!= "!=") (call_expression "CONCAT44(puVar7,param_4)" (identifier "CONCAT44") (argument_list "(puVar7,param_4)" (( "(") (identifier "puVar7") (, ",") (identifier "param_4") () ")")))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);" (assignment_expression "iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(puVar11 + 0x1dc1c0))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc1c0))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x1dc1c0)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x1dc1c0)" (* "*") (cast_expression "(code **)(puVar11 + 0x1dc1c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x1dc1c0)" (( "(") (binary_expression "puVar11 + 0x1dc1c0" (identifier "puVar11") (+ "+") (number_literal "0x1dc1c0")) () ")"))))) () ")")) (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")")))) (; ";")) (expression_statement "uVar3 = (iVar8 + 1) * 0x18;" (assignment_expression "uVar3 = (iVar8 + 1) * 0x18" (identifier "uVar3") (= "=") (binary_expression "(iVar8 + 1) * 0x18" (parenthesized_expression "(iVar8 + 1)" (( "(") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x18"))) (; ";")) (if_statement "if ((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }" (if "if") (parenthesized_expression "((-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14)))))" (( "(") (binary_expression "(-1 < *(int *)(puVar5 + 0x10)) &&\n     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))" (parenthesized_expression "(-1 < *(int *)(puVar5 + 0x10))" (( "(") (binary_expression "-1 < *(int *)(puVar5 + 0x10)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(puVar5 + 0x10)" (* "*") (cast_expression "(int *)(puVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x10)" (( "(") (binary_expression "puVar5 + 0x10" (identifier "puVar5") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))" (( "(") (parenthesized_expression "(*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14)))" (( "(") (binary_expression "*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))" (binary_expression "*(int *)(puVar5 + 0x10) != 0" (pointer_expression "*(int *)(puVar5 + 0x10)" (* "*") (cast_expression "(int *)(puVar5 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x10)" (( "(") (binary_expression "puVar5 + 0x10" (identifier "puVar5") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(uVar3 <= *(uint *)(puVar5 + 0x14))" (( "(") (binary_expression "uVar3 <= *(uint *)(puVar5 + 0x14)" (identifier "uVar3") (<= "<=") (pointer_expression "*(uint *)(puVar5 + 0x14)" (* "*") (cast_expression "(uint *)(puVar5 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x14)" (( "(") (binary_expression "puVar5 + 0x14" (identifier "puVar5") (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);\n    uVar3 = (uint)*(ushort *)(iVar2 + 6);\n    lVar13 = *(longlong *)(iVar2 + 8);\n    if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }\n    if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }\n    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;\n    return uVar3;\n  }" ({ "{") (expression_statement "iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);" (assignment_expression "iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18)" (identifier "iVar2") (= "=") (binary_expression "*(int *)(puVar5 + 8) + (uVar3 - 0x18)" (pointer_expression "*(int *)(puVar5 + 8)" (* "*") (cast_expression "(int *)(puVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 8)" (( "(") (binary_expression "puVar5 + 8" (identifier "puVar5") (+ "+") (number_literal "8")) () ")")))) (+ "+") (parenthesized_expression "(uVar3 - 0x18)" (( "(") (binary_expression "uVar3 - 0x18" (identifier "uVar3") (- "-") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "uVar3 = (uint)*(ushort *)(iVar2 + 6);" (assignment_expression "uVar3 = (uint)*(ushort *)(iVar2 + 6)" (identifier "uVar3") (= "=") (binary_expression "(uint)*(ushort *)(iVar2 + 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar2 + 6)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 6)" (( "(") (binary_expression "iVar2 + 6" (identifier "iVar2") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "lVar13 = *(longlong *)(iVar2 + 8);" (assignment_expression "lVar13 = *(longlong *)(iVar2 + 8)" (identifier "lVar13") (= "=") (pointer_expression "*(longlong *)(iVar2 + 8)" (* "*") (cast_expression "(longlong *)(iVar2 + 8)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (0xfeff < uVar3) {\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }" (if "if") (parenthesized_expression "(0xfeff < uVar3)" (( "(") (binary_expression "0xfeff < uVar3" (number_literal "0xfeff") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      if (uVar3 != 0xffff) {\n        return 0;\n      }\n      piVar6 = *(int **)(puVar5 + 4);\n      iVar2 = piVar6[0xc];\n      if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }\n      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);\n    }" ({ "{") (if_statement "if (uVar3 != 0xffff) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(uVar3 != 0xffff)" (( "(") (binary_expression "uVar3 != 0xffff" (identifier "uVar3") (!= "!=") (number_literal "0xffff")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "piVar6 = *(int **)(puVar5 + 4);" (assignment_expression "piVar6 = *(int **)(puVar5 + 4)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(puVar5 + 4)" (* "*") (cast_expression "(int **)(puVar5 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar5 + 4)" (( "(") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar2 = piVar6[0xc];" (assignment_expression "iVar2 = piVar6[0xc]" (identifier "iVar2") (= "=") (subscript_expression "piVar6[0xc]" (identifier "piVar6") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (if_statement "if (iVar2 == 0) {\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);\n        piVar6[0xc] = iVar2;\n      }" ({ "{") (expression_statement "iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);" (assignment_expression "iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(*piVar6 + 0x6c))(piVar6)" (parenthesized_expression "(**(code **)(*piVar6 + 0x6c))" (( "(") (pointer_expression "**(code **)(*piVar6 + 0x6c)" (* "*") (pointer_expression "*(code **)(*piVar6 + 0x6c)" (* "*") (cast_expression "(code **)(*piVar6 + 0x6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar6 + 0x6c)" (( "(") (binary_expression "*piVar6 + 0x6c" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "0x6c")) () ")"))))) () ")")) (argument_list "(piVar6)" (( "(") (identifier "piVar6") () ")")))) (; ";")) (expression_statement "piVar6[0xc] = iVar2;" (assignment_expression "piVar6[0xc] = iVar2" (subscript_expression "piVar6[0xc]" (identifier "piVar6") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (} "}"))) (expression_statement "uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);" (assignment_expression "uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8)" (parenthesized_expression "(**(code **)(puVar11 + 0x1db22c))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x1db22c)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x1db22c)" (* "*") (cast_expression "(code **)(puVar11 + 0x1db22c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x1db22c)" (( "(") (binary_expression "puVar11 + 0x1db22c" (identifier "puVar11") (+ "+") (number_literal "0x1db22c")) () ")"))))) () ")")) (argument_list "(iVar2,piVar6,iVar8)" (( "(") (identifier "iVar2") (, ",") (identifier "piVar6") (, ",") (identifier "iVar8") () ")")))) (; ";")) (} "}"))) (if_statement "if (*(int *)(puVar5 + 0x18) == 4) {\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }" (if "if") (parenthesized_expression "(*(int *)(puVar5 + 0x18) == 4)" (( "(") (binary_expression "*(int *)(puVar5 + 0x18) == 4" (pointer_expression "*(int *)(puVar5 + 0x18)" (* "*") (cast_expression "(int *)(puVar5 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 0x18)" (( "(") (binary_expression "puVar5 + 0x18" (identifier "puVar5") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "4")) () ")")) (compound_statement "{\n      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);\n      lVar13 = lVar12 + lVar13;\n    }" ({ "{") (expression_statement "lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);" (assignment_expression "lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9)" (identifier "lVar12") (= "=") (call_expression "(**(code **)(puVar11 + 0x1dc1c4))(puVar9)" (parenthesized_expression "(**(code **)(puVar11 + 0x1dc1c4))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x1dc1c4)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x1dc1c4)" (* "*") (cast_expression "(code **)(puVar11 + 0x1dc1c4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x1dc1c4)" (( "(") (binary_expression "puVar11 + 0x1dc1c4" (identifier "puVar11") (+ "+") (number_literal "0x1dc1c4")) () ")"))))) () ")")) (argument_list "(puVar9)" (( "(") (identifier "puVar9") () ")")))) (; ";")) (expression_statement "lVar13 = lVar12 + lVar13;" (assignment_expression "lVar13 = lVar12 + lVar13" (identifier "lVar13") (= "=") (binary_expression "lVar12 + lVar13" (identifier "lVar12") (+ "+") (identifier "lVar13"))) (; ";")) (} "}"))) (labeled_statement "gold::Position_dependent_options::default_options_._12816_8_ = lVar13;" (statement_identifier "gold") (: ":") (ERROR ":" (: ":")) (labeled_statement "Position_dependent_options::default_options_._12816_8_ = lVar13;" (statement_identifier "Position_dependent_options") (: ":") (ERROR ":" (: ":")) (expression_statement "default_options_._12816_8_ = lVar13;" (assignment_expression "default_options_._12816_8_ = lVar13" (field_expression "default_options_._12816_8_" (identifier "default_options_") (. ".") (field_identifier "_12816_8_")) (= "=") (identifier "lVar13")) (; ";")))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c);" (assignment_expression "uVar3 = (**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(puVar11 + 0x1db1ac))\n                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" (parenthesized_expression "(**(code **)(puVar11 + 0x1db1ac))" (( "(") (pointer_expression "**(code **)(puVar11 + 0x1db1ac)" (* "*") (pointer_expression "*(code **)(puVar11 + 0x1db1ac)" (* "*") (cast_expression "(code **)(puVar11 + 0x1db1ac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar11 + 0x1db1ac)" (( "(") (binary_expression "puVar11 + 0x1db1ac" (identifier "puVar11") (+ "+") (number_literal "0x1db1ac")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,\n                     *(int *)(puVar11 + 0x1db098) + 0x747c)" (( "(") (binary_expression "*(int *)(puVar11 + 0x1db098) + 0x7090" (pointer_expression "*(int *)(puVar11 + 0x1db098)" (* "*") (cast_expression "(int *)(puVar11 + 0x1db098)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x1db098)" (( "(") (binary_expression "puVar11 + 0x1db098" (identifier "puVar11") (+ "+") (number_literal "0x1db098")) () ")")))) (+ "+") (number_literal "0x7090")) (, ",") (number_literal "0x3d") (, ",") (binary_expression "*(int *)(puVar11 + 0x1db098) + 0x747c" (pointer_expression "*(int *)(puVar11 + 0x1db098)" (* "*") (cast_expression "(int *)(puVar11 + 0x1db098)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 0x1db098)" (( "(") (binary_expression "puVar11 + 0x1db098" (identifier "puVar11") (+ "+") (number_literal "0x1db098")) () ")")))) (+ "+") (number_literal "0x747c")) () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_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)))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (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: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_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)))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (ERROR) (labeled_statement label: (statement_identifier) (ERROR) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (number_literal) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (return_statement (identifier)))))

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

{
  ushort uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int extraout_v1;
  undefined *puVar5;
  int *piVar6;
  undefined *puVar7;
  int iVar8;
  undefined *puVar9;
  uint uVar10;
  undefined *puVar11;
  longlong lVar12;
  longlong lVar13;
  
  lVar13 = CONCAT44(param_3,param_4);
  iVar8 = param_1 + 0x1c;
  (*(code *)PTR_advance_004c2a14)(iVar8);
  lVar12 = (*(code *)PTR_next_offset_004c2a18)(iVar8);
  if (lVar12 != lVar13) {
    return 0;
  }
  iVar2 = (*(code *)PTR_next_symndx_004c2a3c)(iVar8);
  uVar3 = (iVar2 + 1) * 0x10;
  if ((-1 < *(int *)(param_1 + 0x10)) &&
     ((*(int *)(param_1 + 0x10) != 0 || (uVar3 <= *(uint *)(param_1 + 0x14))))) {
    iVar4 = *(int *)(param_1 + 8) + (uVar3 - 0x10);
    uVar1 = *(ushort *)(iVar4 + 0xe);
    uVar10 = *(uint *)(iVar4 + 4);
    uVar3 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8);
    if (0xfeff < uVar3) {
      if (uVar3 != 0xffff) {
        return 0;
      }
      piVar6 = *(int **)(param_1 + 4);
      iVar4 = piVar6[0xc];
      if (iVar4 == 0) {
        iVar4 = (**(code **)(*piVar6 + 0x6c))(piVar6);
        piVar6[0xc] = iVar4;
      }
      uVar3 = (*(code *)PTR_sym_xindex_to_shndx_004c1ab0)(iVar4,piVar6,iVar2);
    }
    iVar2 = (((uVar10 >> 0x10) << 0x18 | (uVar10 >> 0x18) << 0x10) >> 0x10) +
            ((uVar10 & 0xff) << 8 | uVar10 >> 8 & 0xff) * 0x10000;
    if (*(int *)(param_1 + 0x18) == 4) {
      (*(code *)PTR_next_addend_004c2a40)(iVar8);
      iVar2 = iVar2 + extraout_v1;
    }
    param_5[1] = iVar2;
    *param_5 = 0;
    return uVar3;
  }
  puVar7 = PTR_s_in_a_linker_script_004c191c + 0x746c;
  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x7090;
  puVar11 = PTR_do_gold_unreachable_004c1a30;
  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar5,0x3d);
  puVar9 = puVar5 + 0x1c;
  (**(code **)(puVar11 + 0x1dc184))(puVar9);
  lVar13 = (**(code **)(puVar11 + 0x1dc188))(puVar9);
  if (lVar13 != CONCAT44(puVar7,param_4)) {
    return 0;
  }
  iVar8 = (**(code **)(puVar11 + 0x1dc1c0))(puVar9);
  uVar3 = (iVar8 + 1) * 0x18;
  if ((-1 < *(int *)(puVar5 + 0x10)) &&
     ((*(int *)(puVar5 + 0x10) != 0 || (uVar3 <= *(uint *)(puVar5 + 0x14))))) {
    iVar2 = *(int *)(puVar5 + 8) + (uVar3 - 0x18);
    uVar3 = (uint)*(ushort *)(iVar2 + 6);
    lVar13 = *(longlong *)(iVar2 + 8);
    if (0xfeff < uVar3) {
      if (uVar3 != 0xffff) {
        return 0;
      }
      piVar6 = *(int **)(puVar5 + 4);
      iVar2 = piVar6[0xc];
      if (iVar2 == 0) {
        iVar2 = (**(code **)(*piVar6 + 0x6c))(piVar6);
        piVar6[0xc] = iVar2;
      }
      uVar3 = (**(code **)(puVar11 + 0x1db22c))(iVar2,piVar6,iVar8);
    }
    if (*(int *)(puVar5 + 0x18) == 4) {
      lVar12 = (**(code **)(puVar11 + 0x1dc1c4))(puVar9);
      lVar13 = lVar12 + lVar13;
    }
    gold::Position_dependent_options::default_options_._12816_8_ = lVar13;
    return uVar3;
  }
  uVar3 = (**(code **)(puVar11 + 0x1db1ac))
                    (*(int *)(puVar11 + 0x1db098) + 0x7090,0x3d,
                     *(int *)(puVar11 + 0x1db098) + 0x747c);
  return uVar3;
}

