
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void do_scan_relocs(Sized_relobj_incr<64,_false> * this, Symbol_table *
   param_1, Layout * layout, Read_relocs_data * param_3) */

void __thiscall
gold::Sized_relobj_incr<64,_false>::do_scan_relocs
          (Sized_relobj_incr<64,_false> *this,Symbol_table *param_1,Layout *layout,
          Read_relocs_data *param_3)

{
  byte bVar1;
  int iVar2;
  Sized_incremental_binary<64,_false> *pSVar3;
  int iVar4;
  int iVar5;
  undefined4 extraout_var;
  uint *puVar6;
  ulong uVar7;
  long lVar8;
  undefined4 extraout_var_00;
  uchar *puVar9;
  ulong uVar10;
  int iVar11;
  bool bVar12;
  
  bVar1 = (byte)(this->input_reader_).flags_;
  if ((1 < bVar1 - 1) && (bVar1 != 4)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/incremental.h",0x388,"get_global_symbol_count");
  }
  iVar2 = *(int *)(((this->input_reader_).inputs_)->p_ +
                  (ulong)(this->input_reader_).info_offset_ + 4);
  iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d])
                    (this);
  uVar10 = (((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3 &
           0xffffffffU) << 2;
  puVar6 = (uint *)operator_new__(uVar10);
  (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_ = puVar6;
  memset(puVar6,0,uVar10);
  uVar10 = 0;
  if (iVar2 != 0) {
    do {
      if (1 < (byte)(this->input_reader_).flags_ - 1) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");
      }
      puVar9 = ((this->input_reader_).inputs_)->p_;
      uVar7 = (ulong)(this->input_reader_).info_offset_;
      lVar8 = (ulong)((uint)uVar10 * 0x14) +
              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18);
      iVar4 = *(int *)(puVar9 + lVar8 + 0xc);
      if (iVar4 != 0) {
        if (this->incr_reloc_offset_ == 0xffffffff) {
          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);
        }
        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;
        iVar11 = 0;
        do {
          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object
                    [0x1d])(this);
          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -
                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {
                    /* WARNING: Subroutine does not return */
            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");
          }
          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;
          if (puVar6 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");
          }
          iVar11 = iVar11 + 1;
          puVar6 = puVar6 + uVar10;
          *puVar6 = *puVar6 + 1;
        } while (iVar11 != iVar4);
      }
      bVar12 = uVar10 != iVar2 - 1;
      uVar10 = uVar10 + 1;
    } while (bVar12);
  }
  this->incr_reloc_output_index_ = layout->incremental_inputs_->reloc_count_;
  Relobj::finalize_incremental_relocs((Relobj *)this,layout,false);
  if (this->incr_reloc_count_ != 0) {
    pSVar3 = this->ibase_;
    uVar10 = (ulong)(this->incr_reloc_count_ * 0x18);
    puVar9 = (uchar *)operator_new__(uVar10);
    this->incr_relocs_ = puVar9;
    memcpy(puVar9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,uVar10);
    return;
  }
  return;
}



void FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  long *plVar4;
  void *pvVar5;
  long lVar6;
  size_t __n;
  ulong uVar7;
  int iVar8;
  bool bVar9;
  
  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");
  }
  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));
  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);
  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;
  pvVar5 = (void *)thunk_FUN_002ee780(__n);
  param_1[0x12] = (long)pvVar5;
  memset(pvVar5,0,__n);
  uVar7 = 0;
  if (iVar2 != 0) {
    do {
      if (1 < *(byte *)(param_1 + 0x22) - 1) {
                    /* WARNING: Subroutine does not return */
        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");
      }
      lVar6 = *(long *)param_1[0x21] +
              (ulong)((uint)uVar7 * 0x14) +
              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +
              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *
                           0x18);
      iVar3 = *(int *)(lVar6 + 0xc);
      if (iVar3 != 0) {
        if ((int)param_1[0x2b] == -1) {
          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);
        }
        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;
        iVar8 = 0;
        do {
          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);
          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {
                    /* WARNING: Subroutine does not return */
            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");
          }
          if (param_1[0x12] == 0) {
                    /* WARNING: Subroutine does not return */
            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");
          }
          iVar8 = iVar8 + 1;
          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);
          *piVar1 = *piVar1 + 1;
        } while (iVar8 != iVar3);
      }
      bVar9 = uVar7 != iVar2 - 1;
      uVar7 = uVar7 + 1;
    } while (bVar9);
  }
  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);
  FUN_001cfde0(param_1,param_3,0);
  if (*(int *)((long)param_1 + 0x15c) != 0) {
    lVar6 = param_1[0x1f];
    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);
    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);
    param_1[0x2d] = (long)pvVar5;
    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);
    return;
  }
  return;
}


PUSH R15
MOV R15,RDI
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
MOVZX EAX,byte ptr [RDI + 0x110]
MOV qword ptr [RSP + 0x8],RDX
LEA EDX,[RAX + -0x1]
CMP EDX,0x1
JBE 0x0019ba0e
CMP EAX,0x4
JNZ 0x0019bc0d
MOV RDX,qword ptr [R15 + 0x108]
MOV EAX,dword ptr [R15 + 0x118]
MOV RDI,R15
XOR R12D,R12D
MOV RDX,qword ptr [RDX]
MOV EBP,dword ptr [RDX + RAX*0x1 + 0x4]
MOV RAX,qword ptr [R15]
CALL qword ptr [RAX + 0xe8]
MOV RDX,qword ptr [RAX + 0x8]
SUB RDX,qword ptr [RAX]
SAR RDX,0x3
MOV EBX,EDX
SHL RBX,0x2
MOV RDI,RBX
CALL 0x002ee720
MOV RDX,RBX
XOR ESI,ESI
MOV qword ptr [R15 + 0x90],RAX
MOV RDI,RAX
CALL 0x00149100
LEA EAX,[RBP + -0x1]
MOV qword ptr [RSP],RAX
TEST EBP,EBP
JZ 0x0019bb60
NOP
MOVZX EAX,byte ptr [R15 + 0x110]
SUB EAX,0x1
CMP EAX,0x1
JBE 0x0019baa0
LEA RDX,[0x38b200]
MOV ESI,0x414
LEA RDI,[0x38a1be]
CALL 0x0018dcf0
MOV RAX,qword ptr [R15 + 0x108]
MOV EBP,R12D
MOV RCX,qword ptr [RAX]
MOV EAX,dword ptr [R15 + 0x118]
MOV EDX,dword ptr [RCX + RAX*0x1]
LEA EDX,[RDX + RDX*0x2]
SHL EDX,0x3
LEA RDX,[RAX + RDX*0x1 + 0x20]
LEA EAX,[R12 + R12*0x4]
SHL EAX,0x2
ADD RAX,RDX
ADD RCX,RAX
MOV EAX,dword ptr [R15 + 0x15c]
MOV EBX,dword ptr [RCX + 0xc]
ADD EAX,EBX
TEST EBX,EBX
JZ 0x0019bb45
CMP dword ptr [R15 + 0x158],-0x1
JNZ 0x0019baf3
MOV EDX,dword ptr [RCX + 0x10]
MOV dword ptr [R15 + 0x158],EDX
MOV dword ptr [R15 + 0x15c],EAX
LEA R13,[R12*0x4]
XOR R14D,R14D
NOP dword ptr [RAX]
MOV RAX,qword ptr [R15]
MOV RDI,R15
CALL qword ptr [RAX + 0xe8]
MOV RDX,qword ptr [RAX + 0x8]
SUB RDX,qword ptr [RAX]
SAR RDX,0x3
CMP EBP,EDX
JNC 0x0019bbf5
MOV RAX,qword ptr [R15 + 0x90]
TEST RAX,RAX
JZ 0x0019bbdd
ADD R14D,0x1
ADD dword ptr [RAX + R13*0x1],0x1
CMP R14D,EBX
JNZ 0x0019bb08
LEA RAX,[R12 + 0x1]
CMP R12,qword ptr [RSP]
JZ 0x0019bb60
MOV R12,RAX
JMP 0x0019ba70
MOV RSI,qword ptr [RSP + 0x8]
XOR EDX,EDX
MOV RDI,R15
MOV RAX,qword ptr [RSI + 0x378]
MOV EAX,dword ptr [RAX + 0x78]
MOV dword ptr [R15 + 0x160],EAX
CALL 0x001cfde0
MOV EAX,dword ptr [R15 + 0x15c]
TEST EAX,EAX
JNZ 0x0019bb9a
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA EBX,[RAX + RAX*0x2]
MOV RBP,qword ptr [R15 + 0xf8]
SHL EBX,0x3
MOV RDI,RBX
CALL 0x002ee720
MOV ESI,dword ptr [R15 + 0x158]
MOV RDX,RBX
MOV qword ptr [R15 + 0x168],RAX
ADD RSI,qword ptr [RBP + 0x130]
ADD RSP,0x18
MOV RDI,RAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP 0x00149a90
LEA RDX,[0x38bb90]
MOV ESI,0x5f4
LEA RDI,[0x3853ac]
CALL 0x0018dcf0
LEA RDX,[0x38bb90]
MOV ESI,0x5f3
LEA RDI,[0x3853ac]
CALL 0x0018dcf0
LEA RDX,[0x38b3c0]
MOV ESI,0x388
LEA RDI,[0x38a1be]
CALL 0x0018dcf0
(translation_unit "void FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)" identifier (parameter_list "(long *param_1,undefined8 param_2,long param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (if_statement "if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" if (parenthesized_expression "((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4))" ( (binary_expression "(1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)" (parenthesized_expression "(1 < *(byte *)(param_1 + 0x22) - 1)" ( (binary_expression "1 < *(byte *)(param_1 + 0x22) - 1" number_literal < (binary_expression "*(byte *)(param_1 + 0x22) - 1" (pointer_expression "*(byte *)(param_1 + 0x22)" * (cast_expression "(byte *)(param_1 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) - number_literal)) )) && (parenthesized_expression "(*(byte *)(param_1 + 0x22) != 4)" ( (binary_expression "*(byte *)(param_1 + 0x22) != 4" (pointer_expression "*(byte *)(param_1 + 0x22)" * (cast_expression "(byte *)(param_1 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" { comment (expression_statement "FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");" (call_expression "FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count")" identifier (argument_list "("../../gold/incremental.h",0x388,"get_global_symbol_count")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""get_global_symbol_count"" " string_content ") ))) ;) })) (expression_statement "iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));" (assignment_expression "iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" identifier = (pointer_expression "*(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" * (cast_expression "(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" ( (binary_expression "*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23)" (binary_expression "*(long *)param_1[0x21] + 4" (pointer_expression "*(long *)param_1[0x21]" * (cast_expression "(long *)param_1[0x21]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) + number_literal) + (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x23)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23)" ( (binary_expression "param_1 + 0x23" identifier + number_literal) ))))) ))))) ;) (expression_statement "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);" (assignment_expression "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1)" identifier = (cast_expression "(long *)(**(code **)(*param_1 + 0xe8))(param_1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0xe8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xe8))" ( (pointer_expression "**(code **)(*param_1 + 0xe8)" * (pointer_expression "*(code **)(*param_1 + 0xe8)" * (cast_expression "(code **)(*param_1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xe8)" ( (binary_expression "*param_1 + 0xe8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "__n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;" (assignment_expression "__n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2" identifier = (binary_expression "(plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2" (parenthesized_expression "(plVar4[1] - *plVar4 >> 3 & 0xffffffffU)" ( (binary_expression "plVar4[1] - *plVar4 >> 3 & 0xffffffffU" (binary_expression "plVar4[1] - *plVar4 >> 3" (binary_expression "plVar4[1] - *plVar4" (subscript_expression "plVar4[1]" identifier [ number_literal ]) - (pointer_expression "*plVar4" * identifier)) >> number_literal) & number_literal) )) << number_literal)) ;) (expression_statement "pvVar5 = (void *)thunk_FUN_002ee780(__n);" (assignment_expression "pvVar5 = (void *)thunk_FUN_002ee780(__n)" identifier = (cast_expression "(void *)thunk_FUN_002ee780(__n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002ee780(__n)" identifier (argument_list "(__n)" ( identifier ))))) ;) (expression_statement "param_1[0x12] = (long)pvVar5;" (assignment_expression "param_1[0x12] = (long)pvVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = (cast_expression "(long)pvVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "memset(pvVar5,0,__n);" (call_expression "memset(pvVar5,0,__n)" identifier (argument_list "(pvVar5,0,__n)" ( identifier , number_literal , identifier ))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }" { (do_statement "do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);" do (compound_statement "{\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    }" { (if_statement "if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" if (parenthesized_expression "(1 < *(byte *)(param_1 + 0x22) - 1)" ( (binary_expression "1 < *(byte *)(param_1 + 0x22) - 1" number_literal < (binary_expression "*(byte *)(param_1 + 0x22) - 1" (pointer_expression "*(byte *)(param_1 + 0x22)" * (cast_expression "(byte *)(param_1 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" { comment (expression_statement "FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");" (call_expression "FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader")" identifier (argument_list "("../../gold/incremental.h",0x414,"get_global_symbol_reader")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""get_global_symbol_reader"" " string_content ") ))) ;) })) (expression_statement "lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);" (assignment_expression "lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" identifier = (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23)" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14)" (pointer_expression "*(long *)param_1[0x21]" * (cast_expression "(long *)param_1[0x21]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) + (call_expression "(ulong)((uint)uVar7 * 0x14)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar7 * 0x14)" ( (binary_expression "(uint)uVar7 * 0x14" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) )))) + (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x23)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23)" ( (binary_expression "param_1 + 0x23" identifier + number_literal) ))))) + number_literal) + (call_expression "(ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" ( (binary_expression "*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18" (pointer_expression "*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" * (cast_expression "(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" ( (binary_expression "*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)" (pointer_expression "*(long *)param_1[0x21]" * (cast_expression "(long *)param_1[0x21]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) + (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x23)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23)" ( (binary_expression "param_1 + 0x23" identifier + number_literal) ))))) )))) * number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(lVar6 + 0xc);" (assignment_expression "iVar3 = *(int *)(lVar6 + 0xc)" identifier = (pointer_expression "*(int *)(lVar6 + 0xc)" * (cast_expression "(int *)(lVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xc)" ( (binary_expression "lVar6 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }" { (if_statement "if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }" if (parenthesized_expression "((int)param_1[0x2b] == -1)" ( (binary_expression "(int)param_1[0x2b] == -1" (cast_expression "(int)param_1[0x2b]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x2b]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }" { (expression_statement "*(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);" (assignment_expression "*(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10)" (pointer_expression "*(undefined4 *)(param_1 + 0x2b)" * (cast_expression "(undefined4 *)(param_1 + 0x2b)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x10)" * (cast_expression "(undefined4 *)(lVar6 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "*(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;" (assignment_expression "*(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((long)param_1 + 0x15c) + iVar3" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + identifier)) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);" do (compound_statement "{\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        }" { (expression_statement "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);" (assignment_expression "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1)" identifier = (cast_expression "(long *)(**(code **)(*param_1 + 0xe8))(param_1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0xe8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xe8))" ( (pointer_expression "**(code **)(*param_1 + 0xe8)" * (pointer_expression "*(code **)(*param_1 + 0xe8)" * (cast_expression "(code **)(*param_1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xe8)" ( (binary_expression "*param_1 + 0xe8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" if (parenthesized_expression "((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7)" ( (binary_expression "(uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7" (call_expression "(uint)(plVar4[1] - *plVar4 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(plVar4[1] - *plVar4 >> 3)" ( (binary_expression "plVar4[1] - *plVar4 >> 3" (binary_expression "plVar4[1] - *plVar4" (subscript_expression "plVar4[1]" identifier [ number_literal ]) - (pointer_expression "*plVar4" * identifier)) >> number_literal) ))) <= (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" { comment (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc")" identifier (argument_list "("../../gold/object.h",0x5f3,"count_incremental_reloc")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""count_incremental_reloc"" " string_content ") ))) ;) })) (if_statement "if (param_1[0x12] == 0) {\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" if (parenthesized_expression "(param_1[0x12] == 0)" ( (binary_expression "param_1[0x12] == 0" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" { comment (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc")" identifier (argument_list "("../../gold/object.h",0x5f4,"count_incremental_reloc")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""count_incremental_reloc"" " string_content ") ))) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar1 = (int *)(param_1[0x12] + uVar7 * 4);" (assignment_expression "piVar1 = (int *)(param_1[0x12] + uVar7 * 4)" identifier = (cast_expression "(int *)(param_1[0x12] + uVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x12] + uVar7 * 4)" ( (binary_expression "param_1[0x12] + uVar7 * 4" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar3)" ( (binary_expression "iVar8 != iVar3" identifier != identifier) )) ;) })) (expression_statement "bVar9 = uVar7 != iVar2 - 1;" (assignment_expression "bVar9 = uVar7 != iVar2 - 1" identifier = (binary_expression "uVar7 != iVar2 - 1" identifier != (binary_expression "iVar2 - 1" identifier - number_literal))) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" * (cast_expression "(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x378) + 0x78)" ( (binary_expression "*(long *)(param_3 + 0x378) + 0x78" (pointer_expression "*(long *)(param_3 + 0x378)" * (cast_expression "(long *)(param_3 + 0x378)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x378)" ( (binary_expression "param_3 + 0x378" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "FUN_001cfde0(param_1,param_3,0);" (call_expression "FUN_001cfde0(param_1,param_3,0)" identifier (argument_list "(param_1,param_3,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x15c) != 0)" ( (binary_expression "*(int *)((long)param_1 + 0x15c) != 0" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }" { (expression_statement "lVar6 = param_1[0x1f];" (assignment_expression "lVar6 = param_1[0x1f]" identifier = (subscript_expression "param_1[0x1f]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);" (assignment_expression "uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18)" identifier = (call_expression "(ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(*(int *)((long)param_1 + 0x15c) * 0x18)" ( (binary_expression "*(int *)((long)param_1 + 0x15c) * 0x18" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) * number_literal) )))) ;) (expression_statement "pvVar5 = (void *)thunk_FUN_002ee780(uVar7);" (assignment_expression "pvVar5 = (void *)thunk_FUN_002ee780(uVar7)" identifier = (cast_expression "(void *)thunk_FUN_002ee780(uVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002ee780(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (expression_statement "param_1[0x2d] = (long)pvVar5;" (assignment_expression "param_1[0x2d] = (long)pvVar5" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (cast_expression "(long)pvVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);" (call_expression "memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7)" identifier (argument_list "(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7)" ( identifier , (cast_expression "(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130))" ( (binary_expression "(ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)" (binary_expression "(ulong)*(uint *)(param_1 + 0x2b)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x2b)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) + (pointer_expression "*(long *)(lVar6 + 0x130)" * (cast_expression "(long *)(lVar6 + 0x130)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x130)" ( (binary_expression "lVar6 + 0x130" identifier + number_literal) ))))) ))) , identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void do_scan_relocs(Sized_relobj_incr<64,_false> * this, Symbol_table *\n   param_1, Layout * layout, Read_relocs_data * param_3) */\n\nvoid __thiscall\ngold::Sized_relobj_incr<64,_false>::do_scan_relocs\n          (Sized_relobj_incr<64,_false> *this,Symbol_table *param_1,Layout *layout,\n          Read_relocs_data *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  Sized_incremental_binary<64,_false> *pSVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 extraout_var;\n  uint *puVar6;\n  ulong uVar7;\n  long lVar8;\n  undefined4 extraout_var_00;\n  uchar *puVar9;\n  ulong uVar10;\n  int iVar11;\n  bool bVar12;\n  \n  bVar1 = (byte)(this->input_reader_).flags_;\n  if ((1 < bVar1 - 1) && (bVar1 != 4)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_ + 4);\n  iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d])\n                    (this);\n  uVar10 = (((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3 &\n           0xffffffffU) << 2;\n  puVar6 = (uint *)operator_new__(uVar10);\n  (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_ = puVar6;\n  memset(puVar6,0,uVar10);\n  uVar10 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < (byte)(this->input_reader_).flags_ - 1) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      puVar9 = ((this->input_reader_).inputs_)->p_;\n      uVar7 = (ulong)(this->input_reader_).info_offset_;\n      lVar8 = (ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18);\n      iVar4 = *(int *)(puVar9 + lVar8 + 0xc);\n      if (iVar4 != 0) {\n        if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }\n        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;\n        iVar11 = 0;\n        do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);\n      }\n      bVar12 = uVar10 != iVar2 - 1;\n      uVar10 = uVar10 + 1;\n    } while (bVar12);\n  }\n  this->incr_reloc_output_index_ = layout->incremental_inputs_->reloc_count_;\n  Relobj::finalize_incremental_relocs((Relobj *)this,layout,false);\n  if (this->incr_reloc_count_ != 0) {\n    pSVar3 = this->ibase_;\n    uVar10 = (ulong)(this->incr_reloc_count_ * 0x18);\n    puVar9 = (uchar *)operator_new__(uVar10);\n    this->incr_relocs_ = puVar9;\n    memcpy(puVar9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,uVar10);\n    return;\n  }\n  return;\n}\n\n" comment comment (declaration "void __thiscall\ngold::Sized_relobj_incr<64,_false>::do_scan_relocs\n          (Sized_relobj_incr<64,_false> *this,Symbol_table *param_1,Layout *layout,\n          Read_relocs_data *param_3)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::do_scan_relocs\n          (Sized_relobj_incr<64,_false> *this,Symbol_table *param_1,Layout *layout,\n          Read_relocs_data *param_3)\n\n{\n  byte" identifier > : : (function_declarator "do_scan_relocs\n          (Sized_relobj_incr<64,_false> *this,Symbol_table *param_1,Layout *layout,\n          Read_relocs_data *param_3)" identifier (parameter_list "(Sized_relobj_incr<64,_false> *this,Symbol_table *param_1,Layout *layout,\n          Read_relocs_data *param_3)" ( (parameter_declaration "Sized_relobj_incr" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Read_relocs_data *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) { identifier) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "Sized_incremental_binary<64,_false> *pSVar3;" (update_expression "Sized_incremental_binary<64,_false> *pSVar3" (binary_expression "Sized_incremental_binary<64,_false> *pSVar3" (binary_expression "Sized_incremental_binary<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*pSVar3" * identifier)) --) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 extraout_var_00;" type_identifier identifier ;) (declaration "uchar *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (expression_statement "bVar1 = (byte)(this->input_reader_).flags_;" (assignment_expression "bVar1 = (byte)(this->input_reader_).flags_" identifier = (field_expression "(byte)(this->input_reader_).flags_" (call_expression "(byte)(this->input_reader_)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if ((1 < bVar1 - 1) && (bVar1 != 4)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" if (parenthesized_expression "((1 < bVar1 - 1) && (bVar1 != 4))" ( (binary_expression "(1 < bVar1 - 1) && (bVar1 != 4)" (parenthesized_expression "(1 < bVar1 - 1)" ( (binary_expression "1 < bVar1 - 1" number_literal < (binary_expression "bVar1 - 1" identifier - number_literal)) )) && (parenthesized_expression "(bVar1 != 4)" ( (binary_expression "bVar1 != 4" identifier != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/incremental.h",0x388,"get_global_symbol_count");" (call_expression "do_gold_unreachable("../../gold/incremental.h",0x388,"get_global_symbol_count")" identifier (argument_list "("../../gold/incremental.h",0x388,"get_global_symbol_count")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""get_global_symbol_count"" " string_content ") ))) ;) })) (expression_statement "iVar2 = *(int *)(((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_ + 4);" (assignment_expression "iVar2 = *(int *)(((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_ + 4)" identifier = (pointer_expression "*(int *)(((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_ + 4)" * (cast_expression "(int *)(((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_ + 4)" ( (binary_expression "((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_ + 4" (binary_expression "((this->input_reader_).inputs_)->p_ +\n                  (ulong)(this->input_reader_).info_offset_" (field_expression "((this->input_reader_).inputs_)->p_" (parenthesized_expression "((this->input_reader_).inputs_)" ( (field_expression "(this->input_reader_).inputs_" (parenthesized_expression "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) + (field_expression "(ulong)(this->input_reader_).info_offset_" (call_expression "(ulong)(this->input_reader_)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) ))) . field_identifier)) + number_literal) ))))) ;) (expression_statement "iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d])\n                    (this);" (assignment_expression "iVar4 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d])\n                    (this)" identifier = (call_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d])\n                    (this)" (parenthesized_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d])" ( (pointer_expression "*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d]" * (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier )))) ;) (expression_statement "uVar10 = (((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3 &\n           0xffffffffU) << 2;" (assignment_expression "uVar10 = (((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3 &\n           0xffffffffU) << 2" identifier = (binary_expression "(((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3 &\n           0xffffffffU) << 2" (parenthesized_expression "(((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3 &\n           0xffffffffU)" ( (binary_expression "((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3 &\n           0xffffffffU" (binary_expression "((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4) >> 3" (binary_expression "((long *)CONCAT44(extraout_var,iVar4))[1] - *(long *)CONCAT44(extraout_var,iVar4)" (subscript_expression "((long *)CONCAT44(extraout_var,iVar4))[1]" (parenthesized_expression "((long *)CONCAT44(extraout_var,iVar4))" ( (cast_expression "(long *)CONCAT44(extraout_var,iVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar4)" identifier (argument_list "(extraout_var,iVar4)" ( identifier , identifier )))) )) [ number_literal ]) - (pointer_expression "*(long *)CONCAT44(extraout_var,iVar4)" * (cast_expression "(long *)CONCAT44(extraout_var,iVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var,iVar4)" identifier (argument_list "(extraout_var,iVar4)" ( identifier , identifier )))))) >> number_literal) & number_literal) )) << number_literal)) ;) (expression_statement "puVar6 = (uint *)operator_new__(uVar10);" (assignment_expression "puVar6 = (uint *)operator_new__(uVar10)" identifier = (cast_expression "(uint *)operator_new__(uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (expression_statement "(this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_ = puVar6;" (assignment_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_ = puVar6" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "memset(puVar6,0,uVar10);" (call_expression "memset(puVar6,0,uVar10)" identifier (argument_list "(puVar6,0,uVar10)" ( identifier , number_literal , identifier ))) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (iVar2 != 0) {\n    do {\n      if (1 < (byte)(this->input_reader_).flags_ - 1) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      puVar9 = ((this->input_reader_).inputs_)->p_;\n      uVar7 = (ulong)(this->input_reader_).info_offset_;\n      lVar8 = (ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18);\n      iVar4 = *(int *)(puVar9 + lVar8 + 0xc);\n      if (iVar4 != 0) {\n        if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }\n        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;\n        iVar11 = 0;\n        do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);\n      }\n      bVar12 = uVar10 != iVar2 - 1;\n      uVar10 = uVar10 + 1;\n    } while (bVar12);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      if (1 < (byte)(this->input_reader_).flags_ - 1) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      puVar9 = ((this->input_reader_).inputs_)->p_;\n      uVar7 = (ulong)(this->input_reader_).info_offset_;\n      lVar8 = (ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18);\n      iVar4 = *(int *)(puVar9 + lVar8 + 0xc);\n      if (iVar4 != 0) {\n        if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }\n        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;\n        iVar11 = 0;\n        do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);\n      }\n      bVar12 = uVar10 != iVar2 - 1;\n      uVar10 = uVar10 + 1;\n    } while (bVar12);\n  }" { (do_statement "do {\n      if (1 < (byte)(this->input_reader_).flags_ - 1) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      puVar9 = ((this->input_reader_).inputs_)->p_;\n      uVar7 = (ulong)(this->input_reader_).info_offset_;\n      lVar8 = (ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18);\n      iVar4 = *(int *)(puVar9 + lVar8 + 0xc);\n      if (iVar4 != 0) {\n        if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }\n        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;\n        iVar11 = 0;\n        do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);\n      }\n      bVar12 = uVar10 != iVar2 - 1;\n      uVar10 = uVar10 + 1;\n    } while (bVar12);" do (compound_statement "{\n      if (1 < (byte)(this->input_reader_).flags_ - 1) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      puVar9 = ((this->input_reader_).inputs_)->p_;\n      uVar7 = (ulong)(this->input_reader_).info_offset_;\n      lVar8 = (ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18);\n      iVar4 = *(int *)(puVar9 + lVar8 + 0xc);\n      if (iVar4 != 0) {\n        if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }\n        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;\n        iVar11 = 0;\n        do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);\n      }\n      bVar12 = uVar10 != iVar2 - 1;\n      uVar10 = uVar10 + 1;\n    }" { (if_statement "if (1 < (byte)(this->input_reader_).flags_ - 1) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" if (parenthesized_expression "(1 < (byte)(this->input_reader_).flags_ - 1)" ( (binary_expression "1 < (byte)(this->input_reader_).flags_ - 1" number_literal < (binary_expression "(byte)(this->input_reader_).flags_ - 1" (field_expression "(byte)(this->input_reader_).flags_" (call_expression "(byte)(this->input_reader_)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) ))) . field_identifier) - number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader");" (call_expression "do_gold_unreachable("../../gold/incremental.h",0x414,"get_global_symbol_reader")" identifier (argument_list "("../../gold/incremental.h",0x414,"get_global_symbol_reader")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""get_global_symbol_reader"" " string_content ") ))) ;) })) (expression_statement "puVar9 = ((this->input_reader_).inputs_)->p_;" (assignment_expression "puVar9 = ((this->input_reader_).inputs_)->p_" identifier = (field_expression "((this->input_reader_).inputs_)->p_" (parenthesized_expression "((this->input_reader_).inputs_)" ( (field_expression "(this->input_reader_).inputs_" (parenthesized_expression "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (expression_statement "uVar7 = (ulong)(this->input_reader_).info_offset_;" (assignment_expression "uVar7 = (ulong)(this->input_reader_).info_offset_" identifier = (field_expression "(ulong)(this->input_reader_).info_offset_" (call_expression "(ulong)(this->input_reader_)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(this->input_reader_)" ( (field_expression "this->input_reader_" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "lVar8 = (ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18);" (assignment_expression "lVar8 = (ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18)" identifier = (binary_expression "(ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20 + (ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18)" (binary_expression "(ulong)((uint)uVar10 * 0x14) +\n              uVar7 + 0x20" (binary_expression "(ulong)((uint)uVar10 * 0x14) +\n              uVar7" (call_expression "(ulong)((uint)uVar10 * 0x14)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar10 * 0x14)" ( (binary_expression "(uint)uVar10 * 0x14" (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ))) + identifier) + number_literal) + (call_expression "(ulong)(uint)(*(int *)(puVar9 + uVar7) * 0x18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(*(int *)(puVar9 + uVar7) * 0x18)" ( (binary_expression "*(int *)(puVar9 + uVar7) * 0x18" (pointer_expression "*(int *)(puVar9 + uVar7)" * (cast_expression "(int *)(puVar9 + uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + uVar7)" ( (binary_expression "puVar9 + uVar7" identifier + identifier) )))) * number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar9 + lVar8 + 0xc);" (assignment_expression "iVar4 = *(int *)(puVar9 + lVar8 + 0xc)" identifier = (pointer_expression "*(int *)(puVar9 + lVar8 + 0xc)" * (cast_expression "(int *)(puVar9 + lVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + lVar8 + 0xc)" ( (binary_expression "puVar9 + lVar8 + 0xc" (binary_expression "puVar9 + lVar8" identifier + identifier) + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n        if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }\n        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;\n        iVar11 = 0;\n        do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }\n        this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;\n        iVar11 = 0;\n        do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);\n      }" { (if_statement "if (this->incr_reloc_offset_ == 0xffffffff) {\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }" if (parenthesized_expression "(this->incr_reloc_offset_ == 0xffffffff)" ( (binary_expression "this->incr_reloc_offset_ == 0xffffffff" (field_expression "this->incr_reloc_offset_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);\n        }" { (expression_statement "this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10);" (assignment_expression "this->incr_reloc_offset_ = *(uint *)(puVar9 + lVar8 + 0x10)" (field_expression "this->incr_reloc_offset_" identifier -> field_identifier) = (pointer_expression "*(uint *)(puVar9 + lVar8 + 0x10)" * (cast_expression "(uint *)(puVar9 + lVar8 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + lVar8 + 0x10)" ( (binary_expression "puVar9 + lVar8 + 0x10" (binary_expression "puVar9 + lVar8" identifier + identifier) + number_literal) ))))) ;) })) (expression_statement "this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4;" (assignment_expression "this->incr_reloc_count_ = this->incr_reloc_count_ + iVar4" (field_expression "this->incr_reloc_count_" identifier -> field_identifier) = (binary_expression "this->incr_reloc_count_ + iVar4" (field_expression "this->incr_reloc_count_" identifier -> field_identifier) + identifier)) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        } while (iVar11 != iVar4);" do (compound_statement "{\n          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);\n          if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;\n          if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar11 = iVar11 + 1;\n          puVar6 = puVar6 + uVar10;\n          *puVar6 = *puVar6 + 1;\n        }" { (expression_statement "iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this);" (assignment_expression "iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this)" identifier = (call_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])(this)" (parenthesized_expression "(*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d])" ( (pointer_expression "*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d]" * (subscript_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object\n                    [0x1d]" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier )))) ;) (if_statement "if ((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" if (parenthesized_expression "((uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10)" ( (binary_expression "(uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3) <= (uint)uVar10" (call_expression "(uint)(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3)" ( (binary_expression "((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5) >> 3" (binary_expression "((long *)CONCAT44(extraout_var_00,iVar5))[1] -\n                     *(long *)CONCAT44(extraout_var_00,iVar5)" (subscript_expression "((long *)CONCAT44(extraout_var_00,iVar5))[1]" (parenthesized_expression "((long *)CONCAT44(extraout_var_00,iVar5))" ( (cast_expression "(long *)CONCAT44(extraout_var_00,iVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var_00,iVar5)" identifier (argument_list "(extraout_var_00,iVar5)" ( identifier , identifier )))) )) [ number_literal ]) - (pointer_expression "*(long *)CONCAT44(extraout_var_00,iVar5)" * (cast_expression "(long *)CONCAT44(extraout_var_00,iVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(extraout_var_00,iVar5)" identifier (argument_list "(extraout_var_00,iVar5)" ( identifier , identifier )))))) >> number_literal) ))) <= (cast_expression "(uint)uVar10" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc");" (call_expression "do_gold_unreachable("../../gold/object.h",0x5f3,"count_incremental_reloc")" identifier (argument_list "("../../gold/object.h",0x5f3,"count_incremental_reloc")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""count_incremental_reloc"" " string_content ") ))) ;) })) (expression_statement "puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;" (assignment_expression "puVar6 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_" identifier = (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_" (field_expression "(this->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(this->super_Sized_relobj<64,_false>)" ( (comma_expression "this->super_Sized_relobj<64,_false" (binary_expression "this->super_Sized_relobj<64" (field_expression "this->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier)) ;) (if_statement "if (puVar6 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" if (parenthesized_expression "(puVar6 == (uint *)0x0)" ( (binary_expression "puVar6 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc");" (call_expression "do_gold_unreachable("../../gold/object.h",0x5f4,"count_incremental_reloc")" identifier (argument_list "("../../gold/object.h",0x5f4,"count_incremental_reloc")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""count_incremental_reloc"" " string_content ") ))) ;) })) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + uVar10;" (assignment_expression "puVar6 = puVar6 + uVar10" identifier = (binary_expression "puVar6 + uVar10" identifier + identifier)) ;) (expression_statement "*puVar6 = *puVar6 + 1;" (assignment_expression "*puVar6 = *puVar6 + 1" (pointer_expression "*puVar6" * identifier) = (binary_expression "*puVar6 + 1" (pointer_expression "*puVar6" * identifier) + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != iVar4)" ( (binary_expression "iVar11 != iVar4" identifier != identifier) )) ;) })) (expression_statement "bVar12 = uVar10 != iVar2 - 1;" (assignment_expression "bVar12 = uVar10 != iVar2 - 1" identifier = (binary_expression "uVar10 != iVar2 - 1" identifier != (binary_expression "iVar2 - 1" identifier - number_literal))) ;) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) })) (expression_statement "this->incr_reloc_output_index_ = layout->incremental_inputs_->reloc_count_;" (assignment_expression "this->incr_reloc_output_index_ = layout->incremental_inputs_->reloc_count_" (field_expression "this->incr_reloc_output_index_" identifier -> field_identifier) = (field_expression "layout->incremental_inputs_->reloc_count_" (field_expression "layout->incremental_inputs_" identifier -> field_identifier) -> field_identifier)) ;) (labeled_statement "Relobj::finalize_incremental_relocs((Relobj *)this,layout,false);" statement_identifier : (ERROR ":" :) (expression_statement "finalize_incremental_relocs((Relobj *)this,layout,false);" (call_expression "finalize_incremental_relocs((Relobj *)this,layout,false)" identifier (argument_list "((Relobj *)this,layout,false)" ( (cast_expression "(Relobj *)this" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , false ))) ;)) (if_statement "if (this->incr_reloc_count_ != 0) {\n    pSVar3 = this->ibase_;\n    uVar10 = (ulong)(this->incr_reloc_count_ * 0x18);\n    puVar9 = (uchar *)operator_new__(uVar10);\n    this->incr_relocs_ = puVar9;\n    memcpy(puVar9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,uVar10);\n    return;\n  }" if (parenthesized_expression "(this->incr_reloc_count_ != 0)" ( (binary_expression "this->incr_reloc_count_ != 0" (field_expression "this->incr_reloc_count_" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    pSVar3 = this->ibase_;\n    uVar10 = (ulong)(this->incr_reloc_count_ * 0x18);\n    puVar9 = (uchar *)operator_new__(uVar10);\n    this->incr_relocs_ = puVar9;\n    memcpy(puVar9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,uVar10);\n    return;\n  }" { (expression_statement "pSVar3 = this->ibase_;" (assignment_expression "pSVar3 = this->ibase_" identifier = (field_expression "this->ibase_" identifier -> field_identifier)) ;) (expression_statement "uVar10 = (ulong)(this->incr_reloc_count_ * 0x18);" (assignment_expression "uVar10 = (ulong)(this->incr_reloc_count_ * 0x18)" identifier = (call_expression "(ulong)(this->incr_reloc_count_ * 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(this->incr_reloc_count_ * 0x18)" ( (binary_expression "this->incr_reloc_count_ * 0x18" (field_expression "this->incr_reloc_count_" identifier -> field_identifier) * number_literal) )))) ;) (expression_statement "puVar9 = (uchar *)operator_new__(uVar10);" (assignment_expression "puVar9 = (uchar *)operator_new__(uVar10)" identifier = (cast_expression "(uchar *)operator_new__(uVar10)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (expression_statement "this->incr_relocs_ = puVar9;" (assignment_expression "this->incr_relocs_ = puVar9" (field_expression "this->incr_relocs_" identifier -> field_identifier) = identifier) ;) (expression_statement "memcpy(puVar9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,uVar10);" (call_expression "memcpy(puVar9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,uVar10)" identifier (argument_list "(puVar9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,uVar10)" ( identifier , (binary_expression "(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_" (field_expression "(pSVar3->relocs_reader_).p_" (parenthesized_expression "(pSVar3->relocs_reader_)" ( (field_expression "pSVar3->relocs_reader_" identifier -> field_identifier) )) . field_identifier) + (field_expression "this->incr_reloc_offset_" identifier -> field_identifier)) , identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)" identifier (parameter_list "(long *param_1,undefined8 param_2,long param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (if_statement "if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" if (parenthesized_expression "((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4))" ( (binary_expression "(1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)" (parenthesized_expression "(1 < *(byte *)(param_1 + 0x22) - 1)" ( (binary_expression "1 < *(byte *)(param_1 + 0x22) - 1" number_literal < (binary_expression "*(byte *)(param_1 + 0x22) - 1" (pointer_expression "*(byte *)(param_1 + 0x22)" * (cast_expression "(byte *)(param_1 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) - number_literal)) )) && (parenthesized_expression "(*(byte *)(param_1 + 0x22) != 4)" ( (binary_expression "*(byte *)(param_1 + 0x22) != 4" (pointer_expression "*(byte *)(param_1 + 0x22)" * (cast_expression "(byte *)(param_1 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" { (expression_statement "FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");" (call_expression "FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count")" identifier (argument_list "("../../gold/incremental.h",0x388,"get_global_symbol_count")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""get_global_symbol_count"" " string_content ") ))) ;) })) (expression_statement "iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));" (assignment_expression "iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" identifier = (pointer_expression "*(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" * (cast_expression "(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" ( (binary_expression "*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23)" (binary_expression "*(long *)param_1[0x21] + 4" (pointer_expression "*(long *)param_1[0x21]" * (cast_expression "(long *)param_1[0x21]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) + number_literal) + (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x23)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23)" ( (binary_expression "param_1 + 0x23" identifier + number_literal) ))))) ))))) ;) (expression_statement "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);" (assignment_expression "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1)" identifier = (cast_expression "(long *)(**(code **)(*param_1 + 0xe8))(param_1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0xe8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xe8))" ( (pointer_expression "**(code **)(*param_1 + 0xe8)" * (pointer_expression "*(code **)(*param_1 + 0xe8)" * (cast_expression "(code **)(*param_1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xe8)" ( (binary_expression "*param_1 + 0xe8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "__n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;" (assignment_expression "__n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2" identifier = (binary_expression "(plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2" (parenthesized_expression "(plVar4[1] - *plVar4 >> 3 & 0xffffffffU)" ( (binary_expression "plVar4[1] - *plVar4 >> 3 & 0xffffffffU" (binary_expression "plVar4[1] - *plVar4 >> 3" (binary_expression "plVar4[1] - *plVar4" (subscript_expression "plVar4[1]" identifier [ number_literal ]) - (pointer_expression "*plVar4" * identifier)) >> number_literal) & number_literal) )) << number_literal)) ;) (expression_statement "pvVar5 = (void *)thunk_FUN_002ee780(__n);" (assignment_expression "pvVar5 = (void *)thunk_FUN_002ee780(__n)" identifier = (cast_expression "(void *)thunk_FUN_002ee780(__n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002ee780(__n)" identifier (argument_list "(__n)" ( identifier ))))) ;) (expression_statement "param_1[0x12] = (long)pvVar5;" (assignment_expression "param_1[0x12] = (long)pvVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = (cast_expression "(long)pvVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "memset(pvVar5,0,__n);" (call_expression "memset(pvVar5,0,__n)" identifier (argument_list "(pvVar5,0,__n)" ( identifier , number_literal , identifier ))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }" { (do_statement "do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);" do (compound_statement "{\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    }" { (if_statement "if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" if (parenthesized_expression "(1 < *(byte *)(param_1 + 0x22) - 1)" ( (binary_expression "1 < *(byte *)(param_1 + 0x22) - 1" number_literal < (binary_expression "*(byte *)(param_1 + 0x22) - 1" (pointer_expression "*(byte *)(param_1 + 0x22)" * (cast_expression "(byte *)(param_1 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) - number_literal)) )) (compound_statement "{\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" { (expression_statement "FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");" (call_expression "FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader")" identifier (argument_list "("../../gold/incremental.h",0x414,"get_global_symbol_reader")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""get_global_symbol_reader"" " string_content ") ))) ;) })) (expression_statement "lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);" (assignment_expression "lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" identifier = (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23)" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14)" (pointer_expression "*(long *)param_1[0x21]" * (cast_expression "(long *)param_1[0x21]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) + (call_expression "(ulong)((uint)uVar7 * 0x14)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar7 * 0x14)" ( (binary_expression "(uint)uVar7 * 0x14" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) )))) + (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x23)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23)" ( (binary_expression "param_1 + 0x23" identifier + number_literal) ))))) + number_literal) + (call_expression "(ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" ( (binary_expression "*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18" (pointer_expression "*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" * (cast_expression "(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" ( (binary_expression "*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)" (pointer_expression "*(long *)param_1[0x21]" * (cast_expression "(long *)param_1[0x21]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x21]" identifier [ number_literal ]))) + (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x23)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x23)" ( (binary_expression "param_1 + 0x23" identifier + number_literal) ))))) )))) * number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(lVar6 + 0xc);" (assignment_expression "iVar3 = *(int *)(lVar6 + 0xc)" identifier = (pointer_expression "*(int *)(lVar6 + 0xc)" * (cast_expression "(int *)(lVar6 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xc)" ( (binary_expression "lVar6 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }" { (if_statement "if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }" if (parenthesized_expression "((int)param_1[0x2b] == -1)" ( (binary_expression "(int)param_1[0x2b] == -1" (cast_expression "(int)param_1[0x2b]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x2b]" identifier [ number_literal ])) == number_literal) )) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }" { (expression_statement "*(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);" (assignment_expression "*(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10)" (pointer_expression "*(undefined4 *)(param_1 + 0x2b)" * (cast_expression "(undefined4 *)(param_1 + 0x2b)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(lVar6 + 0x10)" * (cast_expression "(undefined4 *)(lVar6 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "*(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;" (assignment_expression "*(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((long)param_1 + 0x15c) + iVar3" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) + identifier)) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);" do (compound_statement "{\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        }" { (expression_statement "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);" (assignment_expression "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1)" identifier = (cast_expression "(long *)(**(code **)(*param_1 + 0xe8))(param_1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0xe8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xe8))" ( (pointer_expression "**(code **)(*param_1 + 0xe8)" * (pointer_expression "*(code **)(*param_1 + 0xe8)" * (cast_expression "(code **)(*param_1 + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xe8)" ( (binary_expression "*param_1 + 0xe8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))))) ;) (if_statement "if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" if (parenthesized_expression "((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7)" ( (binary_expression "(uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7" (call_expression "(uint)(plVar4[1] - *plVar4 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(plVar4[1] - *plVar4 >> 3)" ( (binary_expression "plVar4[1] - *plVar4 >> 3" (binary_expression "plVar4[1] - *plVar4" (subscript_expression "plVar4[1]" identifier [ number_literal ]) - (pointer_expression "*plVar4" * identifier)) >> number_literal) ))) <= (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" { (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc")" identifier (argument_list "("../../gold/object.h",0x5f3,"count_incremental_reloc")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""count_incremental_reloc"" " string_content ") ))) ;) })) (if_statement "if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" if (parenthesized_expression "(param_1[0x12] == 0)" ( (binary_expression "param_1[0x12] == 0" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" { (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc")" identifier (argument_list "("../../gold/object.h",0x5f4,"count_incremental_reloc")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""count_incremental_reloc"" " string_content ") ))) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar1 = (int *)(param_1[0x12] + uVar7 * 4);" (assignment_expression "piVar1 = (int *)(param_1[0x12] + uVar7 * 4)" identifier = (cast_expression "(int *)(param_1[0x12] + uVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x12] + uVar7 * 4)" ( (binary_expression "param_1[0x12] + uVar7 * 4" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar3)" ( (binary_expression "iVar8 != iVar3" identifier != identifier) )) ;) })) (expression_statement "bVar9 = uVar7 != iVar2 - 1;" (assignment_expression "bVar9 = uVar7 != iVar2 - 1" identifier = (binary_expression "uVar7 != iVar2 - 1" identifier != (binary_expression "iVar2 - 1" identifier - number_literal))) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" * (cast_expression "(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 0x378) + 0x78)" ( (binary_expression "*(long *)(param_3 + 0x378) + 0x78" (pointer_expression "*(long *)(param_3 + 0x378)" * (cast_expression "(long *)(param_3 + 0x378)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x378)" ( (binary_expression "param_3 + 0x378" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "FUN_001cfde0(param_1,param_3,0);" (call_expression "FUN_001cfde0(param_1,param_3,0)" identifier (argument_list "(param_1,param_3,0)" ( identifier , identifier , number_literal ))) ;) (if_statement "if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x15c) != 0)" ( (binary_expression "*(int *)((long)param_1 + 0x15c) != 0" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }" { (expression_statement "lVar6 = param_1[0x1f];" (assignment_expression "lVar6 = param_1[0x1f]" identifier = (subscript_expression "param_1[0x1f]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);" (assignment_expression "uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18)" identifier = (call_expression "(ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(*(int *)((long)param_1 + 0x15c) * 0x18)" ( (binary_expression "*(int *)((long)param_1 + 0x15c) * 0x18" (pointer_expression "*(int *)((long)param_1 + 0x15c)" * (cast_expression "(int *)((long)param_1 + 0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x15c)" ( (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) * number_literal) )))) ;) (expression_statement "pvVar5 = (void *)thunk_FUN_002ee780(uVar7);" (assignment_expression "pvVar5 = (void *)thunk_FUN_002ee780(uVar7)" identifier = (cast_expression "(void *)thunk_FUN_002ee780(uVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002ee780(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (expression_statement "param_1[0x2d] = (long)pvVar5;" (assignment_expression "param_1[0x2d] = (long)pvVar5" (subscript_expression "param_1[0x2d]" identifier [ number_literal ]) = (cast_expression "(long)pvVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);" (call_expression "memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7)" identifier (argument_list "(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7)" ( identifier , (cast_expression "(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130))" ( (binary_expression "(ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)" (binary_expression "(ulong)*(uint *)(param_1 + 0x2b)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_1 + 0x2b)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2b)" ( (binary_expression "param_1 + 0x2b" identifier + number_literal) )))) + (pointer_expression "*(long *)(lVar6 + 0x130)" * (cast_expression "(long *)(lVar6 + 0x130)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x130)" ( (binary_expression "lVar6 + 0x130" identifier + number_literal) ))))) ))) , identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) )) && (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 IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (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 IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) >> LIT) & LIT) )) << LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (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 IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) + (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (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 ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) >> LIT) ))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (binary_expression IDENT - LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , IDENT ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0019b9e0(long *param_1,undefined8 param_2,long param_3)" (identifier "FUN_0019b9e0") (parameter_list "(long *param_1,undefined8 param_2,long param_3)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  long *plVar4;\n  void *pvVar5;\n  long lVar6;\n  size_t __n;\n  ulong uVar7;\n  int iVar8;\n  bool bVar9;\n  \n  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }\n  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));\n  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;\n  pvVar5 = (void *)thunk_FUN_002ee780(__n);\n  param_1[0x12] = (long)pvVar5;\n  memset(pvVar5,0,__n);\n  uVar7 = 0;\n  if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }\n  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);\n  FUN_001cfde0(param_1,param_3,0);\n  if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "void *pvVar5;" (primitive_type "void") (pointer_declarator "*pvVar5" (* "*") (identifier "pvVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (if_statement "if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" (if "if") (parenthesized_expression "((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4))" (( "(") (binary_expression "(1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)" (parenthesized_expression "(1 < *(byte *)(param_1 + 0x22) - 1)" (( "(") (binary_expression "1 < *(byte *)(param_1 + 0x22) - 1" (number_literal "1") (< "<") (binary_expression "*(byte *)(param_1 + 0x22) - 1" (pointer_expression "*(byte *)(param_1 + 0x22)" (* "*") (cast_expression "(byte *)(param_1 + 0x22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x22)" (( "(") (binary_expression "param_1 + 0x22" (identifier "param_1") (+ "+") (number_literal "0x22")) () ")")))) (- "-") (number_literal "1"))) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)(param_1 + 0x22) != 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x22) != 4" (pointer_expression "*(byte *)(param_1 + 0x22)" (* "*") (cast_expression "(byte *)(param_1 + 0x22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x22)" (( "(") (binary_expression "param_1 + 0x22" (identifier "param_1") (+ "+") (number_literal "0x22")) () ")")))) (!= "!=") (number_literal "4")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");\n  }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");" (call_expression "FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/incremental.h",0x388,"get_global_symbol_count")" (( "(") (string_literal ""../../gold/incremental.h"" (" """) (string_content "../../gold/incremental.h") (" """)) (, ",") (number_literal "0x388") (, ",") (string_literal ""get_global_symbol_count"" (" """) (string_content "get_global_symbol_count") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));" (assignment_expression "iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" (* "*") (cast_expression "(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23))" (( "(") (binary_expression "*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23)" (binary_expression "*(long *)param_1[0x21] + 4" (pointer_expression "*(long *)param_1[0x21]" (* "*") (cast_expression "(long *)param_1[0x21]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")))) (+ "+") (number_literal "4")) (+ "+") (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x23)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x23)" (( "(") (binary_expression "param_1 + 0x23" (identifier "param_1") (+ "+") (number_literal "0x23")) () ")"))))) () ")"))))) (; ";")) (expression_statement "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);" (assignment_expression "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1)" (identifier "plVar4") (= "=") (cast_expression "(long *)(**(code **)(*param_1 + 0xe8))(param_1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*param_1 + 0xe8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xe8))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xe8)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xe8)" (* "*") (cast_expression "(code **)(*param_1 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xe8)" (( "(") (binary_expression "*param_1 + 0xe8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "__n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;" (assignment_expression "__n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2" (identifier "__n") (= "=") (binary_expression "(plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2" (parenthesized_expression "(plVar4[1] - *plVar4 >> 3 & 0xffffffffU)" (( "(") (binary_expression "plVar4[1] - *plVar4 >> 3 & 0xffffffffU" (binary_expression "plVar4[1] - *plVar4 >> 3" (binary_expression "plVar4[1] - *plVar4" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (>> ">>") (number_literal "3")) (& "&") (number_literal "0xffffffffU")) () ")")) (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "pvVar5 = (void *)thunk_FUN_002ee780(__n);" (assignment_expression "pvVar5 = (void *)thunk_FUN_002ee780(__n)" (identifier "pvVar5") (= "=") (cast_expression "(void *)thunk_FUN_002ee780(__n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002ee780(__n)" (identifier "thunk_FUN_002ee780") (argument_list "(__n)" (( "(") (identifier "__n") () ")"))))) (; ";")) (expression_statement "param_1[0x12] = (long)pvVar5;" (assignment_expression "param_1[0x12] = (long)pvVar5" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (= "=") (cast_expression "(long)pvVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar5"))) (; ";")) (expression_statement "memset(pvVar5,0,__n);" (call_expression "memset(pvVar5,0,__n)" (identifier "memset") (argument_list "(pvVar5,0,__n)" (( "(") (identifier "pvVar5") (, ",") (number_literal "0") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar2 != 0) {\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);\n  }" ({ "{") (do_statement "do {\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    } while (bVar9);" (do "do") (compound_statement "{\n      if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }\n      lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);\n      iVar3 = *(int *)(lVar6 + 0xc);\n      if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }\n      bVar9 = uVar7 != iVar2 - 1;\n      uVar7 = uVar7 + 1;\n    }" ({ "{") (if_statement "if (1 < *(byte *)(param_1 + 0x22) - 1) {\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" (if "if") (parenthesized_expression "(1 < *(byte *)(param_1 + 0x22) - 1)" (( "(") (binary_expression "1 < *(byte *)(param_1 + 0x22) - 1" (number_literal "1") (< "<") (binary_expression "*(byte *)(param_1 + 0x22) - 1" (pointer_expression "*(byte *)(param_1 + 0x22)" (* "*") (cast_expression "(byte *)(param_1 + 0x22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x22)" (( "(") (binary_expression "param_1 + 0x22" (identifier "param_1") (+ "+") (number_literal "0x22")) () ")")))) (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n                    \n        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");\n      }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");" (call_expression "FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/incremental.h",0x414,"get_global_symbol_reader")" (( "(") (string_literal ""../../gold/incremental.h"" (" """) (string_content "../../gold/incremental.h") (" """)) (, ",") (number_literal "0x414") (, ",") (string_literal ""get_global_symbol_reader"" (" """) (string_content "get_global_symbol_reader") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18);" (assignment_expression "lVar6 = *(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (identifier "lVar6") (= "=") (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +\n              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23) + 0x20" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14) +\n              (ulong)*(uint *)(param_1 + 0x23)" (binary_expression "*(long *)param_1[0x21] +\n              (ulong)((uint)uVar7 * 0x14)" (pointer_expression "*(long *)param_1[0x21]" (* "*") (cast_expression "(long *)param_1[0x21]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")))) (+ "+") (call_expression "(ulong)((uint)uVar7 * 0x14)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uint)uVar7 * 0x14)" (( "(") (binary_expression "(uint)uVar7 * 0x14" (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")) (* "*") (number_literal "0x14")) () ")")))) (+ "+") (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x23)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x23)" (( "(") (binary_expression "param_1 + 0x23" (identifier "param_1") (+ "+") (number_literal "0x23")) () ")"))))) (+ "+") (number_literal "0x20")) (+ "+") (call_expression "(ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18)" (( "(") (binary_expression "*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *\n                           0x18" (pointer_expression "*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" (* "*") (cast_expression "(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23))" (( "(") (binary_expression "*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)" (pointer_expression "*(long *)param_1[0x21]" (* "*") (cast_expression "(long *)param_1[0x21]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]")))) (+ "+") (binary_expression "(ulong)*(uint *)(param_1 + 0x23)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x23)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x23)" (( "(") (binary_expression "param_1 + 0x23" (identifier "param_1") (+ "+") (number_literal "0x23")) () ")"))))) () ")")))) (* "*") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(lVar6 + 0xc);" (assignment_expression "iVar3 = *(int *)(lVar6 + 0xc)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(lVar6 + 0xc)" (* "*") (cast_expression "(int *)(lVar6 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0xc)" (( "(") (binary_expression "lVar6 + 0xc" (identifier "lVar6") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }\n        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;\n        iVar8 = 0;\n        do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);\n      }" ({ "{") (if_statement "if ((int)param_1[0x2b] == -1) {\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }" (if "if") (parenthesized_expression "((int)param_1[0x2b] == -1)" (( "(") (binary_expression "(int)param_1[0x2b] == -1" (cast_expression "(int)param_1[0x2b]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x2b]" (identifier "param_1") ([ "[") (number_literal "0x2b") (] "]"))) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);\n        }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);" (assignment_expression "*(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10)" (pointer_expression "*(undefined4 *)(param_1 + 0x2b)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2b)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2b)" (( "(") (binary_expression "param_1 + 0x2b" (identifier "param_1") (+ "+") (number_literal "0x2b")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(lVar6 + 0x10)" (* "*") (cast_expression "(undefined4 *)(lVar6 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x10)" (( "(") (binary_expression "lVar6 + 0x10" (identifier "lVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;" (assignment_expression "*(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3" (pointer_expression "*(int *)((long)param_1 + 0x15c)" (* "*") (cast_expression "(int *)((long)param_1 + 0x15c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x15c)" (( "(") (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x15c")) () ")")))) (= "=") (binary_expression "*(int *)((long)param_1 + 0x15c) + iVar3" (pointer_expression "*(int *)((long)param_1 + 0x15c)" (* "*") (cast_expression "(int *)((long)param_1 + 0x15c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x15c)" (( "(") (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x15c")) () ")")))) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        } while (iVar8 != iVar3);" (do "do") (compound_statement "{\n          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);\n          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }\n          if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }\n          iVar8 = iVar8 + 1;\n          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);\n          *piVar1 = *piVar1 + 1;\n        }" ({ "{") (expression_statement "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);" (assignment_expression "plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1)" (identifier "plVar4") (= "=") (cast_expression "(long *)(**(code **)(*param_1 + 0xe8))(param_1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*param_1 + 0xe8))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xe8))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xe8)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xe8)" (* "*") (cast_expression "(code **)(*param_1 + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xe8)" (( "(") (binary_expression "*param_1 + 0xe8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (if_statement "if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" (if "if") (parenthesized_expression "((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7)" (( "(") (binary_expression "(uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7" (call_expression "(uint)(plVar4[1] - *plVar4 >> 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(plVar4[1] - *plVar4 >> 3)" (( "(") (binary_expression "plVar4[1] - *plVar4 >> 3" (binary_expression "plVar4[1] - *plVar4" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");\n          }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/object.h",0x5f3,"count_incremental_reloc")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5f3") (, ",") (string_literal ""count_incremental_reloc"" (" """) (string_content "count_incremental_reloc") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1[0x12] == 0) {\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" (if "if") (parenthesized_expression "(param_1[0x12] == 0)" (( "(") (binary_expression "param_1[0x12] == 0" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");\n          }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");" (call_expression "FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/object.h",0x5f4,"count_incremental_reloc")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5f4") (, ",") (string_literal ""count_incremental_reloc"" (" """) (string_content "count_incremental_reloc") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar1 = (int *)(param_1[0x12] + uVar7 * 4);" (assignment_expression "piVar1 = (int *)(param_1[0x12] + uVar7 * 4)" (identifier "piVar1") (= "=") (cast_expression "(int *)(param_1[0x12] + uVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0x12] + uVar7 * 4)" (( "(") (binary_expression "param_1[0x12] + uVar7 * 4" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != iVar3)" (( "(") (binary_expression "iVar8 != iVar3" (identifier "iVar8") (!= "!=") (identifier "iVar3")) () ")")) (; ";")) (} "}"))) (expression_statement "bVar9 = uVar7 != iVar2 - 1;" (assignment_expression "bVar9 = uVar7 != iVar2 - 1" (identifier "bVar9") (= "=") (binary_expression "uVar7 != iVar2 - 1" (identifier "uVar7") (!= "!=") (binary_expression "iVar2 - 1" (identifier "iVar2") (- "-") (number_literal "1")))) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" (* "*") (cast_expression "(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 0x378) + 0x78)" (( "(") (binary_expression "*(long *)(param_3 + 0x378) + 0x78" (pointer_expression "*(long *)(param_3 + 0x378)" (* "*") (cast_expression "(long *)(param_3 + 0x378)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x378)" (( "(") (binary_expression "param_3 + 0x378" (identifier "param_3") (+ "+") (number_literal "0x378")) () ")")))) (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "FUN_001cfde0(param_1,param_3,0);" (call_expression "FUN_001cfde0(param_1,param_3,0)" (identifier "FUN_001cfde0") (argument_list "(param_1,param_3,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (*(int *)((long)param_1 + 0x15c) != 0) {\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)((long)param_1 + 0x15c) != 0)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x15c) != 0" (pointer_expression "*(int *)((long)param_1 + 0x15c)" (* "*") (cast_expression "(int *)((long)param_1 + 0x15c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x15c)" (( "(") (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x15c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar6 = param_1[0x1f];\n    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);\n    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);\n    param_1[0x2d] = (long)pvVar5;\n    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);\n    return;\n  }" ({ "{") (expression_statement "lVar6 = param_1[0x1f];" (assignment_expression "lVar6 = param_1[0x1f]" (identifier "lVar6") (= "=") (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]"))) (; ";")) (expression_statement "uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);" (assignment_expression "uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18)" (identifier "uVar7") (= "=") (call_expression "(ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(*(int *)((long)param_1 + 0x15c) * 0x18)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x15c) * 0x18" (pointer_expression "*(int *)((long)param_1 + 0x15c)" (* "*") (cast_expression "(int *)((long)param_1 + 0x15c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x15c)" (( "(") (binary_expression "(long)param_1 + 0x15c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x15c")) () ")")))) (* "*") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "pvVar5 = (void *)thunk_FUN_002ee780(uVar7);" (assignment_expression "pvVar5 = (void *)thunk_FUN_002ee780(uVar7)" (identifier "pvVar5") (= "=") (cast_expression "(void *)thunk_FUN_002ee780(uVar7)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002ee780(uVar7)" (identifier "thunk_FUN_002ee780") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))))) (; ";")) (expression_statement "param_1[0x2d] = (long)pvVar5;" (assignment_expression "param_1[0x2d] = (long)pvVar5" (subscript_expression "param_1[0x2d]" (identifier "param_1") ([ "[") (number_literal "0x2d") (] "]")) (= "=") (cast_expression "(long)pvVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar5"))) (; ";")) (expression_statement "memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);" (call_expression "memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7)" (identifier "memcpy") (argument_list "(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7)" (( "(") (identifier "pvVar5") (, ",") (cast_expression "(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130))" (( "(") (binary_expression "(ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)" (binary_expression "(ulong)*(uint *)(param_1 + 0x2b)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_1 + 0x2b)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2b)" (( "(") (binary_expression "param_1 + 0x2b" (identifier "param_1") (+ "+") (number_literal "0x2b")) () ")")))) (+ "+") (pointer_expression "*(long *)(lVar6 + 0x130)" (* "*") (cast_expression "(long *)(lVar6 + 0x130)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x130)" (( "(") (binary_expression "lVar6 + 0x130" (identifier "lVar6") (+ "+") (number_literal "0x130")) () ")"))))) () ")"))) (, ",") (identifier "uVar7") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void do_scan_relocs(Sized_relobj_incr<64,_false> * this, Symbol_table *
   param_1, Layout * layout, Read_relocs_data * param_3) */

void __thiscall
gold::Sized_relobj_incr<64,_false>::do_scan_relocs
          (Sized_relobj_incr<64,_false> *this,Symbol_table *param_1,Layout *layout,
          Read_relocs_data *param_3)

{
  byte var_2;
  int var_7;
  var_1<64,_false> *pSVar3;
  int var_11;
  int iVar5;
  type_1 extraout_var;
  type_2 *var_12;
  type_3 var_8;
  long var_10;
  type_1 extraout_var_00;
  type_4 *var_9;
  type_3 var_14;
  int var_13;
  bool bVar12;
  
  var_2 = (byte)(this->input_reader_).flags_;
  if ((1 < var_2 - 1) && (var_2 != 4)) {
                    /* WARNING: Subroutine does not return */
    var_3("../../gold/incremental.h",0x388,"get_global_symbol_count");
  }
  var_7 = *(int *)(((this->input_reader_).inputs_)->p_ +
                  (type_3)(this->input_reader_).info_offset_ + 4);
  var_11 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object[0x1d])
                    (this);
  var_14 = (((long *)var_4(extraout_var,var_11))[1] - *(long *)var_4(extraout_var,var_11) >> 3 &
           0xffffffffU) << 2;
  var_12 = (type_2 *)var_5(var_14);
  (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_ = var_12;
  var_6(var_12,0,var_14);
  var_14 = 0;
  if (var_7 != 0) {
    do {
      if (1 < (byte)(this->input_reader_).flags_ - 1) {
                    /* WARNING: Subroutine does not return */
        var_3("../../gold/incremental.h",0x414,"get_global_symbol_reader");
      }
      var_9 = ((this->input_reader_).inputs_)->p_;
      var_8 = (type_3)(this->input_reader_).info_offset_;
      var_10 = (type_3)((type_2)var_14 * 0x14) +
              var_8 + 0x20 + (type_3)(type_2)(*(int *)(var_9 + var_8) * 0x18);
      var_11 = *(int *)(var_9 + var_10 + 0xc);
      if (var_11 != 0) {
        if (this->incr_reloc_offset_ == 0xffffffff) {
          this->incr_reloc_offset_ = *(type_2 *)(var_9 + var_10 + 0x10);
        }
        this->incr_reloc_count_ = this->incr_reloc_count_ + var_11;
        var_13 = 0;
        do {
          iVar5 = (*(this->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object
                    [0x1d])(this);
          if ((type_2)(((long *)var_4(extraout_var_00,iVar5))[1] -
                     *(long *)var_4(extraout_var_00,iVar5) >> 3) <= (type_2)var_14) {
                    /* WARNING: Subroutine does not return */
            var_3("../../gold/object.h",0x5f3,"count_incremental_reloc");
          }
          var_12 = (this->super_Sized_relobj<64,_false>).super_Relobj.reloc_counts_;
          if (var_12 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
            var_3("../../gold/object.h",0x5f4,"count_incremental_reloc");
          }
          var_13 = var_13 + 1;
          var_12 = var_12 + var_14;
          *var_12 = *var_12 + 1;
        } while (var_13 != var_11);
      }
      bVar12 = var_14 != var_7 - 1;
      var_14 = var_14 + 1;
    } while (bVar12);
  }
  this->incr_reloc_output_index_ = layout->incremental_inputs_->reloc_count_;
  Relobj::var_15((type_5 *)this,layout,false);
  if (this->incr_reloc_count_ != 0) {
    pSVar3 = this->ibase_;
    var_14 = (type_3)(this->incr_reloc_count_ * 0x18);
    var_9 = (type_4 *)var_5(var_14);
    this->incr_relocs_ = var_9;
    var_16(var_9,(pSVar3->relocs_reader_).p_ + this->incr_reloc_offset_,var_14);
    return;
  }
  return;
}


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

void MASKED(long *param_1,undefined8 param_2,long param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  long *plVar4;
  void *pvVar5;
  long lVar6;
  size_t __n;
  ulong uVar7;
  int iVar8;
  bool bVar9;
  
  if ((1 < *(byte *)(param_1 + 0x22) - 1) && (*(byte *)(param_1 + 0x22) != 4)) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/incremental.h",0x388,"get_global_symbol_count");
  }
  iVar2 = *(int *)(*(long *)param_1[0x21] + 4 + (ulong)*(uint *)(param_1 + 0x23));
  plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);
  __n = (plVar4[1] - *plVar4 >> 3 & 0xffffffffU) << 2;
  pvVar5 = (void *)thunk_FUN_002ee780(__n);
  param_1[0x12] = (long)pvVar5;
  memset(pvVar5,0,__n);
  uVar7 = 0;
  if (iVar2 != 0) {
    do {
      if (1 < *(byte *)(param_1 + 0x22) - 1) {
                    /* WARNING: Subroutine does not return */
        FUN_0018dcf0("../../gold/incremental.h",0x414,"get_global_symbol_reader");
      }
      lVar6 = *(long *)param_1[0x21] +
              (ulong)((uint)uVar7 * 0x14) +
              (ulong)*(uint *)(param_1 + 0x23) + 0x20 +
              (ulong)(uint)(*(int *)(*(long *)param_1[0x21] + (ulong)*(uint *)(param_1 + 0x23)) *
                           0x18);
      iVar3 = *(int *)(lVar6 + 0xc);
      if (iVar3 != 0) {
        if ((int)param_1[0x2b] == -1) {
          *(undefined4 *)(param_1 + 0x2b) = *(undefined4 *)(lVar6 + 0x10);
        }
        *(int *)((long)param_1 + 0x15c) = *(int *)((long)param_1 + 0x15c) + iVar3;
        iVar8 = 0;
        do {
          plVar4 = (long *)(**(code **)(*param_1 + 0xe8))(param_1);
          if ((uint)(plVar4[1] - *plVar4 >> 3) <= (uint)uVar7) {
                    /* WARNING: Subroutine does not return */
            FUN_0018dcf0("../../gold/object.h",0x5f3,"count_incremental_reloc");
          }
          if (param_1[0x12] == 0) {
                    /* WARNING: Subroutine does not return */
            FUN_0018dcf0("../../gold/object.h",0x5f4,"count_incremental_reloc");
          }
          iVar8 = iVar8 + 1;
          piVar1 = (int *)(param_1[0x12] + uVar7 * 4);
          *piVar1 = *piVar1 + 1;
        } while (iVar8 != iVar3);
      }
      bVar9 = uVar7 != iVar2 - 1;
      uVar7 = uVar7 + 1;
    } while (bVar9);
  }
  *(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(*(long *)(param_3 + 0x378) + 0x78);
  FUN_001cfde0(param_1,param_3,0);
  if (*(int *)((long)param_1 + 0x15c) != 0) {
    lVar6 = param_1[0x1f];
    uVar7 = (ulong)(uint)(*(int *)((long)param_1 + 0x15c) * 0x18);
    pvVar5 = (void *)thunk_FUN_002ee780(uVar7);
    param_1[0x2d] = (long)pvVar5;
    memcpy(pvVar5,(void *)((ulong)*(uint *)(param_1 + 0x2b) + *(long *)(lVar6 + 0x130)),uVar7);
    return;
  }
  return;
}

