
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void set_final_data_size(Gdb_index * this) */

void __thiscall gold::Gdb_index::set_final_data_size(Gdb_index *this)

{
  byte bVar1;
  pointer ppvVar2;
  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar3;
  pointer pCVar4;
  pointer pCVar5;
  pointer pTVar6;
  pointer pTVar7;
  pointer pPVar8;
  pointer pPVar9;
  Dwarf_range_list *pDVar10;
  Gdb_hashtab<gold::Gdb_index::Gdb_symbol> *pGVar11;
  size_t sVar12;
  section_size_type sVar13;
  off_t *poVar14;
  Dwarf_range_list **ppDVar15;
  int iVar16;
  int iVar17;
  uint uVar18;
  int iVar19;
  int *piVar20;
  uint uVar21;
  
  Stringpool_template<char>::set_string_offsets(&this->stringpool_);
  uVar21 = (int)(this->cu_vector_list_).
                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>
                ._M_impl._M_finish -
           (int)(this->cu_vector_list_).
                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>
                ._M_impl._M_start >> 2;
  if (0xfffffff < uVar21) {
                    /* WARNING: Subroutine does not return */
    __cxa_throw_bad_array_new_length();
  }
  poVar14 = (off_t *)operator_new__(uVar21 * 8);
  this->cu_vector_offsets_ = poVar14;
  if (uVar21 == 0) {
    iVar17 = 0;
  }
  else {
    ppvVar2 = (this->cu_vector_list_).
              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>
              ._M_impl._M_start;
    uVar18 = 0;
    iVar17 = 0;
    do {
      pvVar3 = ppvVar2[uVar18];
      *(int *)(poVar14 + uVar18) = iVar17;
      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;
      uVar18 = uVar18 + 1;
      iVar17 = iVar17 + 4 +
               ((int)(pvVar3->
                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>
                     )._M_impl._M_finish -
                (int)(pvVar3->
                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>
                     )._M_impl._M_start >> 3) * 4;
    } while (uVar18 != uVar21);
  }
  pCVar4 = (this->comp_units_).
           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>
           ._M_impl._M_finish;
  pCVar5 = (this->comp_units_).
           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>
           ._M_impl._M_start;
  *(undefined4 *)((int)&this->tu_offset_ + 4) = 0;
  iVar19 = (int)pCVar4 + (0x18 - (int)pCVar5);
  pTVar6 = (this->type_units_).
           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>
           ._M_impl._M_finish;
  pTVar7 = (this->type_units_).
           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>
           ._M_impl._M_start;
  *(undefined4 *)((int)&this->addr_offset_ + 4) = 0;
  iVar16 = (int)pTVar6 + (iVar19 - (int)pTVar7);
  *(int *)&this->tu_offset_ = iVar19;
  pPVar8 = (this->ranges_).
           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>
           ._M_impl._M_finish;
  pPVar9 = (this->ranges_).
           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>
           ._M_impl._M_start;
  *(int *)&this->addr_offset_ = iVar16;
  iVar19 = (int)pPVar8 - (int)pPVar9;
  if ((iVar19 >> 2) * -0x55555555 != 0) {
    ppDVar15 = &pPVar9->ranges;
    piVar20 = (int *)(iVar19 + (int)ppDVar15);
    do {
      pDVar10 = *ppDVar15;
      ppDVar15 = ppDVar15 + 3;
      iVar16 = (int)(pDVar10->range_list_).
                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
                    ._M_impl._M_finish +
               (iVar16 - (int)(pDVar10->range_list_).
                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>
                              ._M_impl._M_start);
    } while ((Dwarf_range_list **)piVar20 != ppDVar15);
  }
  pGVar11 = this->gdb_symtab_;
  *(int *)&this->symtab_offset_ = iVar16;
  *(undefined4 *)((int)&this->symtab_offset_ + 4) = 0;
  sVar12 = pGVar11->capacity_;
  *(undefined4 *)((int)&this->cu_pool_offset_ + 4) = 0;
  *(undefined4 *)((int)&this->stringpool_offset_ + 4) = 0;
  iVar16 = iVar16 + sVar12 * 8;
  iVar17 = iVar17 + iVar16;
  *(int *)&this->cu_pool_offset_ = iVar16;
  sVar13 = (this->stringpool_).strtab_size_;
  *(int *)&this->stringpool_offset_ = iVar17;
  if (sVar13 == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size");
  }
  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x1c;
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    *(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =
         iVar17 + sVar13;
    *(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;
    (this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");
}



void FUN_00240010(int param_1)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int *piVar8;
  int unaff_EBP;
  uint uVar9;
  
  FUN_00074f0e();
  FUN_0034b2b0(param_1 + 0xa8);
  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;
  if (0xfffffff < uVar9) {
                    /* WARNING: Subroutine does not return */
    FUN_003ada10();
  }
  iVar3 = FUN_003ac450(uVar9 * 8);
  *(int *)(param_1 + 0xa4) = iVar3;
  if (uVar9 == 0) {
    iVar6 = 0;
  }
  else {
    iVar5 = *(int *)(param_1 + 0x98);
    uVar7 = 0;
    iVar6 = 0;
    do {
      piVar4 = *(int **)(iVar5 + uVar7 * 4);
      *(int *)(iVar3 + uVar7 * 8) = iVar6;
      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;
      uVar7 = uVar7 + 1;
      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;
    } while (uVar7 != uVar9);
  }
  *(undefined4 *)(param_1 + 0xf8) = 0;
  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;
  *(undefined4 *)(param_1 + 0x100) = 0;
  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;
  *(int *)(param_1 + 0xf4) = iVar3;
  *(int *)(param_1 + 0xfc) = iVar5;
  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);
  if ((iVar3 >> 2) * -0x55555555 != 0) {
    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);
    piVar8 = (int *)(iVar3 + (int)piVar4);
    do {
      piVar2 = (int *)*piVar4;
      piVar4 = piVar4 + 3;
      iVar5 = iVar5 + (piVar2[1] - *piVar2);
    } while (piVar8 != piVar4);
  }
  *(int *)(param_1 + 0x104) = iVar5;
  *(undefined4 *)(param_1 + 0x108) = 0;
  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);
  *(undefined4 *)(param_1 + 0x110) = 0;
  *(undefined4 *)(param_1 + 0x118) = 0;
  iVar5 = iVar5 + iVar3 * 8;
  iVar6 = iVar6 + iVar5;
  *(int *)(param_1 + 0x10c) = iVar5;
  *(int *)(param_1 + 0x114) = iVar6;
  if (*(int *)(param_1 + 0xe0) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);
  }
  bVar1 = *(byte *)(param_1 + 0x1c);
  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    *(int *)(param_1 + 0xc) = iVar6;
    *(undefined4 *)(param_1 + 0x10) = 0;
    *(byte *)(param_1 + 0x1c) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);
}


PUSH EBP
CALL 0x00074f0e
ADD EBP,0x3a9fea
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x28
MOV ESI,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x18],EBP
MOV EBX,EBP
LEA EAX,[ESI + 0xa8]
PUSH EAX
CALL 0x0034b2b0
MOV EDI,dword ptr [ESI + 0x9c]
ADD ESP,0x10
SUB EDI,dword ptr [ESI + 0x98]
SAR EDI,0x2
CMP EDI,0xfffffff
JA 0x0004506c
SUB ESP,0xc
LEA EAX,[EDI*0x8 + 0x0]
PUSH EAX
CALL 0x003ac450
ADD ESP,0x10
MOV dword ptr [ESI + 0xa4],EAX
TEST EDI,EDI
JZ 0x00240198
MOV dword ptr [ESP + 0x30],ESI
MOV EBP,dword ptr [ESI + 0x98]
XOR EBX,EBX
XOR EDX,EDX
LEA ESI,[ESI]
MOV ECX,dword ptr [EBP + EBX*0x4]
MOV dword ptr [EAX + EBX*0x8],EDX
MOV dword ptr [EAX + EBX*0x8 + 0x4],0x0
ADD EBX,0x1
MOV ESI,dword ptr [ECX + 0x4]
SUB ESI,dword ptr [ECX]
MOV ECX,ESI
SAR ECX,0x3
LEA EDX,[EDX + ECX*0x4 + 0x4]
CMP EBX,EDI
JNZ 0x00240088
MOV ESI,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESI + 0x74]
SUB ECX,dword ptr [ESI + 0x70]
XOR EBP,EBP
MOV dword ptr [ESI + 0xf8],0x0
LEA EAX,[ECX + 0x18]
MOV ECX,dword ptr [ESI + 0x80]
SUB ECX,dword ptr [ESI + 0x7c]
MOV dword ptr [ESI + 0x100],EBP
ADD ECX,EAX
MOV dword ptr [ESI + 0xf4],EAX
MOV EBX,dword ptr [ESI + 0x8c]
MOV EAX,dword ptr [ESI + 0x88]
MOV EDI,ECX
MOV dword ptr [ESI + 0xfc],ECX
SUB EBX,EAX
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,EBX
SAR EAX,0x2
IMUL EAX,EAX,-0x55555555
TEST EAX,EAX
JZ 0x00240125
MOV EAX,dword ptr [ESP + 0x8]
ADD EAX,0x8
ADD EBX,EAX
NOP
MOV EBP,dword ptr [EAX]
ADD EAX,0xc
MOV EDI,dword ptr [EBP + 0x4]
SUB EDI,dword ptr [EBP]
ADD ECX,EDI
CMP EBX,EAX
JNZ 0x00240110
MOV EDI,ECX
XOR EBP,EBP
MOV EAX,dword ptr [ESI + 0x94]
MOV dword ptr [ESI + 0x104],EDI
MOV dword ptr [ESI + 0x108],EBP
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESI + 0x110],0x0
MOV dword ptr [ESI + 0x118],0x0
LEA EAX,[ECX + EAX*0x8]
ADD EDX,EAX
MOV dword ptr [ESI + 0x10c],EAX
MOV EAX,dword ptr [ESI + 0xe0]
MOV dword ptr [ESI + 0x114],EDX
TEST EAX,EAX
JZ 0x002401bc
MOVZX ECX,byte ptr [ESI + 0x1c]
ADD EDX,EAX
MOV EAX,EDX
XOR EDX,EDX
TEST CL,0x2
JNZ 0x0024019f
TEST CL,0x8
JNZ 0x0024019f
OR ECX,0x2
MOV dword ptr [ESI + 0xc],EAX
MOV dword ptr [ESI + 0x10],EDX
MOV byte ptr [ESI + 0x1c],CL
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EDX,EDX
JMP 0x002400b0
PUSH EAX
MOV EBX,dword ptr [ESP + 0x10]
LEA EAX,[EBX + 0xffe9d08c]
PUSH EAX
LEA EAX,[EBX + 0xffe6335d]
PUSH 0x218
PUSH EAX
CALL 0x002446e0
PUSH EDX
MOV EBX,dword ptr [ESP + 0x10]
LEA EAX,[EBX + 0xffe9d09c]
PUSH EAX
LEA EAX,[EBX + 0xffe9cc66]
PUSH 0x111
PUSH EAX
CALL 0x002446e0
(translation_unit "void FUN_00240010(int param_1)\n\n{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}\n\n" (function_definition "void FUN_00240010(int param_1)\n\n{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}" primitive_type (function_declarator "FUN_00240010(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (expression_statement "FUN_00074f0e();" (call_expression "FUN_00074f0e()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0034b2b0(param_1 + 0xa8);" (call_expression "FUN_0034b2b0(param_1 + 0xa8)" identifier (argument_list "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) ))) ;) (expression_statement "uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;" (assignment_expression "uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2" identifier = (binary_expression "*(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2" (binary_expression "*(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98)" (pointer_expression "*(int *)(param_1 + 0x9c)" * (cast_expression "(int *)(param_1 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (0xfffffff < uVar9) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003ada10();\n  }" if (parenthesized_expression "(0xfffffff < uVar9)" ( (binary_expression "0xfffffff < uVar9" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_003ada10();\n  }" { comment (expression_statement "FUN_003ada10();" (call_expression "FUN_003ada10()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar3 = FUN_003ac450(uVar9 * 8);" (assignment_expression "iVar3 = FUN_003ac450(uVar9 * 8)" identifier = (call_expression "FUN_003ac450(uVar9 * 8)" identifier (argument_list "(uVar9 * 8)" ( (binary_expression "uVar9 * 8" identifier * number_literal) )))) ;) (expression_statement "*(int *)(param_1 + 0xa4) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xa4) = iVar3" (pointer_expression "*(int *)(param_1 + 0xa4)" * (cast_expression "(int *)(param_1 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar6 = 0;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" else (compound_statement "{\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x98);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x98)" identifier = (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);" do (compound_statement "{\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    }" { (expression_statement "piVar4 = *(int **)(iVar5 + uVar7 * 4);" (assignment_expression "piVar4 = *(int **)(iVar5 + uVar7 * 4)" identifier = (pointer_expression "*(int **)(iVar5 + uVar7 * 4)" * (cast_expression "(int **)(iVar5 + uVar7 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + uVar7 * 4)" ( (binary_expression "iVar5 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(int *)(iVar3 + uVar7 * 8) = iVar6;" (assignment_expression "*(int *)(iVar3 + uVar7 * 8) = iVar6" (pointer_expression "*(int *)(iVar3 + uVar7 * 8)" * (cast_expression "(int *)(iVar3 + uVar7 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + uVar7 * 8)" ( (binary_expression "iVar3 + uVar7 * 8" identifier + (binary_expression "uVar7 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 4 + uVar7 * 8)" * (cast_expression "(undefined4 *)(iVar3 + 4 + uVar7 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4 + uVar7 * 8)" ( (binary_expression "iVar3 + 4 + uVar7 * 8" (binary_expression "iVar3 + 4" identifier + number_literal) + (binary_expression "uVar7 * 8" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;" (assignment_expression "iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4" identifier = (binary_expression "iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4" (binary_expression "iVar6 + 4" identifier + number_literal) + (binary_expression "(piVar4[1] - *piVar4 >> 3) * 4" (parenthesized_expression "(piVar4[1] - *piVar4 >> 3)" ( (binary_expression "piVar4[1] - *piVar4 >> 3" (binary_expression "piVar4[1] - *piVar4" (subscript_expression "piVar4[1]" identifier [ number_literal ]) - (pointer_expression "*piVar4" * identifier)) >> number_literal) )) * number_literal))) ;) }) while (parenthesized_expression "(uVar7 != uVar9)" ( (binary_expression "uVar7 != uVar9" identifier != identifier) )) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;" (assignment_expression "iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18" identifier = (binary_expression "(*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18" (parenthesized_expression "(*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70))" ( (binary_expression "*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) )) + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x100) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x100) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x100)" * (cast_expression "(undefined4 *)(param_1 + 0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;" (assignment_expression "iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3" identifier = (binary_expression "(*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3" (parenthesized_expression "(*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c))" ( (binary_expression "*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) ))))) )) + identifier)) ;) (expression_statement "*(int *)(param_1 + 0xf4) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xf4) = iVar3" (pointer_expression "*(int *)(param_1 + 0xf4)" * (cast_expression "(int *)(param_1 + 0xf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf4)" ( (binary_expression "param_1 + 0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xfc) = iVar5;" (assignment_expression "*(int *)(param_1 + 0xfc) = iVar5" (pointer_expression "*(int *)(param_1 + 0xfc)" * (cast_expression "(int *)(param_1 + 0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xfc)" ( (binary_expression "param_1 + 0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88)" identifier = (binary_expression "*(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88)" (pointer_expression "*(int *)(param_1 + 0x8c)" * (cast_expression "(int *)(param_1 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))))) ;) (if_statement "if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }" if (parenthesized_expression "((iVar3 >> 2) * -0x55555555 != 0)" ( (binary_expression "(iVar3 >> 2) * -0x55555555 != 0" (binary_expression "(iVar3 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 >> 2)" ( (binary_expression "iVar3 >> 2" identifier >> number_literal) )) * number_literal) != number_literal) )) (compound_statement "{\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }" { (expression_statement "piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);" (assignment_expression "piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x88) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x88) + 8)" ( (binary_expression "*(int *)(param_1 + 0x88) + 8" (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar8 = (int *)(iVar3 + (int)piVar4);" (assignment_expression "piVar8 = (int *)(iVar3 + (int)piVar4)" identifier = (cast_expression "(int *)(iVar3 + (int)piVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (int)piVar4)" ( (binary_expression "iVar3 + (int)piVar4" identifier + (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);" do (compound_statement "{\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    }" { (expression_statement "piVar2 = (int *)*piVar4;" (assignment_expression "piVar2 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "piVar4 = piVar4 + 3;" (assignment_expression "piVar4 = piVar4 + 3" identifier = (binary_expression "piVar4 + 3" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar5 + (piVar2[1] - *piVar2);" (assignment_expression "iVar5 = iVar5 + (piVar2[1] - *piVar2)" identifier = (binary_expression "iVar5 + (piVar2[1] - *piVar2)" identifier + (parenthesized_expression "(piVar2[1] - *piVar2)" ( (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - (pointer_expression "*piVar2" * identifier)) )))) ;) }) while (parenthesized_expression "(piVar8 != piVar4)" ( (binary_expression "piVar8 != piVar4" identifier != identifier) )) ;) })) (expression_statement "*(int *)(param_1 + 0x104) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x104) = iVar5" (pointer_expression "*(int *)(param_1 + 0x104)" * (cast_expression "(int *)(param_1 + 0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x108) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x108) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x108)" * (cast_expression "(undefined4 *)(param_1 + 0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);" (assignment_expression "iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x94) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0x94) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x94) + 4)" ( (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x118) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x118) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x118)" * (cast_expression "(undefined4 *)(param_1 + 0x118)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = iVar5 + iVar3 * 8;" (assignment_expression "iVar5 = iVar5 + iVar3 * 8" identifier = (binary_expression "iVar5 + iVar3 * 8" identifier + (binary_expression "iVar3 * 8" identifier * number_literal))) ;) (expression_statement "iVar6 = iVar6 + iVar5;" (assignment_expression "iVar6 = iVar6 + iVar5" identifier = (binary_expression "iVar6 + iVar5" identifier + identifier)) ;) (expression_statement "*(int *)(param_1 + 0x10c) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x10c) = iVar5" (pointer_expression "*(int *)(param_1 + 0x10c)" * (cast_expression "(int *)(param_1 + 0x10c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x114) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x114) = iVar6" (pointer_expression "*(int *)(param_1 + 0x114)" * (cast_expression "(int *)(param_1 + 0x114)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(param_1 + 0xe0) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xe0) == 0)" ( (binary_expression "*(int *)(param_1 + 0xe0) == 0" (pointer_expression "*(int *)(param_1 + 0xe0)" * (cast_expression "(int *)(param_1 + 0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }" { comment (expression_statement "FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);" (call_expression "FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6)" identifier (argument_list "(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6)" ( (binary_expression "unaff_EBP + 0x246c50" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x247086" identifier + number_literal) , identifier ))) ;) })) (expression_statement "bVar1 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(param_1 + 0xe0);" (assignment_expression "iVar6 = iVar6 + *(int *)(param_1 + 0xe0)" identifier = (binary_expression "iVar6 + *(int *)(param_1 + 0xe0)" identifier + (pointer_expression "*(int *)(param_1 + 0xe0)" * (cast_expression "(int *)(param_1 + 0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))))) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" { (expression_statement "*(int *)(param_1 + 0xc) = iVar6;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar6" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0x1c) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x1c) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);" (call_expression "FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6)" identifier (argument_list "(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6)" ( (binary_expression "unaff_EBP + 0x20d347" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x247076" identifier + number_literal) , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void set_final_data_size(Gdb_index * this) */\n\nvoid __thiscall gold::Gdb_index::set_final_data_size(Gdb_index *this)\n\n{\n  byte bVar1;\n  pointer ppvVar2;\n  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar3;\n  pointer pCVar4;\n  pointer pCVar5;\n  pointer pTVar6;\n  pointer pTVar7;\n  pointer pPVar8;\n  pointer pPVar9;\n  Dwarf_range_list *pDVar10;\n  Gdb_hashtab<gold::Gdb_index::Gdb_symbol> *pGVar11;\n  size_t sVar12;\n  section_size_type sVar13;\n  off_t *poVar14;\n  Dwarf_range_list **ppDVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  \n  Stringpool_template<char>::set_string_offsets(&this->stringpool_);\n  uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish -\n           (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_start >> 2;\n  if (0xfffffff < uVar21) {\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw_bad_array_new_length();\n  }\n  poVar14 = (off_t *)operator_new__(uVar21 * 8);\n  this->cu_vector_offsets_ = poVar14;\n  if (uVar21 == 0) {\n    iVar17 = 0;\n  }\n  else {\n    ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start;\n    uVar18 = 0;\n    iVar17 = 0;\n    do {\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    } while (uVar18 != uVar21);\n  }\n  pCVar4 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;\n  pCVar5 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;\n  *(undefined4 *)((int)&this->tu_offset_ + 4) = 0;\n  iVar19 = (int)pCVar4 + (0x18 - (int)pCVar5);\n  pTVar6 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_finish;\n  pTVar7 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;\n  *(undefined4 *)((int)&this->addr_offset_ + 4) = 0;\n  iVar16 = (int)pTVar6 + (iVar19 - (int)pTVar7);\n  *(int *)&this->tu_offset_ = iVar19;\n  pPVar8 = (this->ranges_).\n           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_finish;\n  pPVar9 = (this->ranges_).\n           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_start;\n  *(int *)&this->addr_offset_ = iVar16;\n  iVar19 = (int)pPVar8 - (int)pPVar9;\n  if ((iVar19 >> 2) * -0x55555555 != 0) {\n    ppDVar15 = &pPVar9->ranges;\n    piVar20 = (int *)(iVar19 + (int)ppDVar15);\n    do {\n      pDVar10 = *ppDVar15;\n      ppDVar15 = ppDVar15 + 3;\n      iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);\n    } while ((Dwarf_range_list **)piVar20 != ppDVar15);\n  }\n  pGVar11 = this->gdb_symtab_;\n  *(int *)&this->symtab_offset_ = iVar16;\n  *(undefined4 *)((int)&this->symtab_offset_ + 4) = 0;\n  sVar12 = pGVar11->capacity_;\n  *(undefined4 *)((int)&this->cu_pool_offset_ + 4) = 0;\n  *(undefined4 *)((int)&this->stringpool_offset_ + 4) = 0;\n  iVar16 = iVar16 + sVar12 * 8;\n  iVar17 = iVar17 + iVar16;\n  *(int *)&this->cu_pool_offset_ = iVar16;\n  sVar13 = (this->stringpool_).strtab_size_;\n  *(int *)&this->stringpool_offset_ = iVar17;\n  if (sVar13 == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size");\n  }\n  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x1c;\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =\n         iVar17 + sVar13;\n    *(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;\n    (this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Gdb_index::set_final_data_size(Gdb_index *this)\n\n{\n  byte bVar1;\n  pointer ppvVar2;\n  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar3;\n  pointer pCVar4;\n  pointer pCVar5;\n  pointer pTVar6;\n  pointer pTVar7;\n  pointer pPVar8;\n  pointer pPVar9;\n  Dwarf_range_list *pDVar10;\n  Gdb_hashtab<gold::Gdb_index::Gdb_symbol> *pGVar11;\n  size_t sVar12;\n  section_size_type sVar13;\n  off_t *poVar14;\n  Dwarf_range_list **ppDVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  \n  Stringpool_template<char>::set_string_offsets(&this->stringpool_);\n  uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish -\n           (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_start >> 2;\n  if (0xfffffff < uVar21) {\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw_bad_array_new_length();\n  }\n  poVar14 = (off_t *)operator_new__(uVar21 * 8);\n  this->cu_vector_offsets_ = poVar14;\n  if (uVar21 == 0) {\n    iVar17 = 0;\n  }\n  else {\n    ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start;\n    uVar18 = 0;\n    iVar17 = 0;\n    do {\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    } while (uVar18 != uVar21);\n  }\n  pCVar4 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;\n  pCVar5 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;\n  *(undefined4 *)((int)&this->tu_offset_ + 4) = 0;\n  iVar19 = (int)pCVar4 + (0x18 - (int)pCVar5);\n  pTVar6 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_finish;\n  pTVar7 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;\n  *(undefined4 *)((int)&this->addr_offset_ + 4) = 0;\n  iVar16 = (int)pTVar6 + (iVar19 - (int)pTVar7);\n  *(int *)&this->tu_offset_ = iVar19;\n  pPVar8 = (this->ranges_).\n           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_finish;\n  pPVar9 = (this->ranges_).\n           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_start;\n  *(int *)&this->addr_offset_ = iVar16;\n  iVar19 = (int)pPVar8 - (int)pPVar9;\n  if ((iVar19 >> 2) * -0x55555555 != 0) {\n    ppDVar15 = &pPVar9->ranges;\n    piVar20 = (int *)(iVar19 + (int)ppDVar15);\n    do {\n      pDVar10 = *ppDVar15;\n      ppDVar15 = ppDVar15 + 3;\n      iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);\n    } while ((Dwarf_range_list **)piVar20 != ppDVar15);\n  }\n  pGVar11 = this->gdb_symtab_;\n  *(int *)&this->symtab_offset_ = iVar16;\n  *(undefined4 *)((int)&this->symtab_offset_ + 4) = 0;\n  sVar12 = pGVar11->capacity_;\n  *(undefined4 *)((int)&this->cu_pool_offset_ + 4) = 0;\n  *(undefined4 *)((int)&this->stringpool_offset_ + 4) = 0;\n  iVar16 = iVar16 + sVar12 * 8;\n  iVar17 = iVar17 + iVar16;\n  *(int *)&this->cu_pool_offset_ = iVar16;\n  sVar13 = (this->stringpool_).strtab_size_;\n  *(int *)&this->stringpool_offset_ = iVar17;\n  if (sVar13 == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size");\n  }\n  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x1c;\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =\n         iVar17 + sVar13;\n    *(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;\n    (this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index::" identifier : : identifier : :) (function_declarator "set_final_data_size(Gdb_index *this)" identifier (parameter_list "(Gdb_index *this)" ( (parameter_declaration "Gdb_index *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  pointer ppvVar2;\n  vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_> *pvVar3;\n  pointer pCVar4;\n  pointer pCVar5;\n  pointer pTVar6;\n  pointer pTVar7;\n  pointer pPVar8;\n  pointer pPVar9;\n  Dwarf_range_list *pDVar10;\n  Gdb_hashtab<gold::Gdb_index::Gdb_symbol> *pGVar11;\n  size_t sVar12;\n  section_size_type sVar13;\n  off_t *poVar14;\n  Dwarf_range_list **ppDVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  int *piVar20;\n  uint uVar21;\n  \n  Stringpool_template<char>::set_string_offsets(&this->stringpool_);\n  uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish -\n           (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_start >> 2;\n  if (0xfffffff < uVar21) {\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw_bad_array_new_length();\n  }\n  poVar14 = (off_t *)operator_new__(uVar21 * 8);\n  this->cu_vector_offsets_ = poVar14;\n  if (uVar21 == 0) {\n    iVar17 = 0;\n  }\n  else {\n    ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start;\n    uVar18 = 0;\n    iVar17 = 0;\n    do {\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    } while (uVar18 != uVar21);\n  }\n  pCVar4 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;\n  pCVar5 = (this->comp_units_).\n           super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;\n  *(undefined4 *)((int)&this->tu_offset_ + 4) = 0;\n  iVar19 = (int)pCVar4 + (0x18 - (int)pCVar5);\n  pTVar6 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_finish;\n  pTVar7 = (this->type_units_).\n           super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;\n  *(undefined4 *)((int)&this->addr_offset_ + 4) = 0;\n  iVar16 = (int)pTVar6 + (iVar19 - (int)pTVar7);\n  *(int *)&this->tu_offset_ = iVar19;\n  pPVar8 = (this->ranges_).\n           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_finish;\n  pPVar9 = (this->ranges_).\n           super__Vector_base<gold::Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_start;\n  *(int *)&this->addr_offset_ = iVar16;\n  iVar19 = (int)pPVar8 - (int)pPVar9;\n  if ((iVar19 >> 2) * -0x55555555 != 0) {\n    ppDVar15 = &pPVar9->ranges;\n    piVar20 = (int *)(iVar19 + (int)ppDVar15);\n    do {\n      pDVar10 = *ppDVar15;\n      ppDVar15 = ppDVar15 + 3;\n      iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);\n    } while ((Dwarf_range_list **)piVar20 != ppDVar15);\n  }\n  pGVar11 = this->gdb_symtab_;\n  *(int *)&this->symtab_offset_ = iVar16;\n  *(undefined4 *)((int)&this->symtab_offset_ + 4) = 0;\n  sVar12 = pGVar11->capacity_;\n  *(undefined4 *)((int)&this->cu_pool_offset_ + 4) = 0;\n  *(undefined4 *)((int)&this->stringpool_offset_ + 4) = 0;\n  iVar16 = iVar16 + sVar12 * 8;\n  iVar17 = iVar17 + iVar16;\n  *(int *)&this->cu_pool_offset_ = iVar16;\n  sVar13 = (this->stringpool_).strtab_size_;\n  *(int *)&this->stringpool_offset_ = iVar17;\n  if (sVar13 == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size");\n  }\n  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x1c;\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =\n         iVar17 + sVar13;\n    *(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;\n    (this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "pointer ppvVar2;" type_identifier identifier ;) (ERROR "vector<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "vector<std::pair<int,_unsigned_char>,_std" (binary_expression "vector<std::pair<int" (binary_expression "vector<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_unsigned_char>_>_> *pvVar3;" (comma_expression "pair<int,_unsigned_char>_>_> *pvVar3" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_> *pvVar3" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*pvVar3" * identifier))) ;) (declaration "pointer pCVar4;" type_identifier identifier ;) (declaration "pointer pCVar5;" type_identifier identifier ;) (declaration "pointer pTVar6;" type_identifier identifier ;) (declaration "pointer pTVar7;" type_identifier identifier ;) (declaration "pointer pPVar8;" type_identifier identifier ;) (declaration "pointer pPVar9;" type_identifier identifier ;) (declaration "Dwarf_range_list *pDVar10;" type_identifier (pointer_declarator "*pDVar10" * identifier) ;) (ERROR "Gdb_hashtab<gold::" (binary_expression "Gdb_hashtab<gold" identifier < identifier) : :) (labeled_statement "Gdb_index::Gdb_symbol> *pGVar11;" statement_identifier : (ERROR ":" :) (expression_statement "Gdb_symbol> *pGVar11;" (binary_expression "Gdb_symbol> *pGVar11" identifier > (pointer_expression "*pGVar11" * identifier)) ;)) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "section_size_type sVar13;" type_identifier identifier ;) (declaration "off_t *poVar14;" type_identifier (pointer_declarator "*poVar14" * identifier) ;) (declaration "Dwarf_range_list **ppDVar15;" type_identifier (pointer_declarator "**ppDVar15" * (pointer_declarator "*ppDVar15" * identifier)) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (expression_statement "Stringpool_template<char>::set_string_offsets(&this->stringpool_);" (binary_expression "Stringpool_template<char>::set_string_offsets(&this->stringpool_)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "set_string_offsets(&this->stringpool_)" identifier (argument_list "(&this->stringpool_)" ( (pointer_expression "&this->stringpool_" & (field_expression "this->stringpool_" identifier -> field_identifier)) )))) ;) (ERROR "uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish -\n           (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std" (binary_expression "uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std::pair<int" (binary_expression "uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std::vector<std" (assignment_expression "uVar21 = (int)(this->cu_vector_list_).\n                super__Vector_base<std" identifier = (binary_expression "(int)(this->cu_vector_list_).\n                super__Vector_base<std" (cast_expression "(int)(this->cu_vector_list_).\n                super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->cu_vector_list_).\n                super__Vector_base" (parenthesized_expression "(this->cu_vector_list_)" ( (field_expression "this->cu_vector_list_" identifier -> field_identifier) )) . field_identifier)) < identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>_>_>*,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*,_std" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish -\n           (int)(this->cu_vector_list_).\n                super__Vector_base<std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish -\n           (int)(this->cu_vector_list_).\n                super__Vector_base<std" (binary_expression "_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish -\n           (int)(this->cu_vector_list_).\n                super__Vector_base" (field_expression "_unsigned_char>_>_>*>_>\n                ._M_impl._M_finish" (field_expression "_unsigned_char>_>_>*>_>\n                ._M_impl" (binary_expression "_unsigned_char>_>_>*>_" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*>_" * (ERROR ">" >) identifier)) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)(this->cu_vector_list_).\n                super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->cu_vector_list_).\n                super__Vector_base" (parenthesized_expression "(this->cu_vector_list_)" ( (field_expression "this->cu_vector_list_" identifier -> field_identifier) )) . field_identifier))) < identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>_>_>*,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*,_std" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_start >> 2;" (comma_expression "pair<int,_unsigned_char>_>_>*>_>\n                ._M_impl._M_start >> 2" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*>_>\n                ._M_impl._M_start >> 2" (field_expression "_unsigned_char>_>_>*>_>\n                ._M_impl._M_start" (field_expression "_unsigned_char>_>_>*>_>\n                ._M_impl" (binary_expression "_unsigned_char>_>_>*>_" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*>_" * (ERROR ">" >) identifier)) (ERROR ">" >) . field_identifier) . field_identifier) >> number_literal)) ;) (if_statement "if (0xfffffff < uVar21) {\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw_bad_array_new_length();\n  }" if (parenthesized_expression "(0xfffffff < uVar21)" ( (binary_expression "0xfffffff < uVar21" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __cxa_throw_bad_array_new_length();\n  }" { comment (expression_statement "__cxa_throw_bad_array_new_length();" (call_expression "__cxa_throw_bad_array_new_length()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "poVar14 = (off_t *)operator_new__(uVar21 * 8);" (assignment_expression "poVar14 = (off_t *)operator_new__(uVar21 * 8)" identifier = (cast_expression "(off_t *)operator_new__(uVar21 * 8)" ( (type_descriptor "off_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar21 * 8)" identifier (argument_list "(uVar21 * 8)" ( (binary_expression "uVar21 * 8" identifier * number_literal) ))))) ;) (expression_statement "this->cu_vector_offsets_ = poVar14;" (assignment_expression "this->cu_vector_offsets_ = poVar14" (field_expression "this->cu_vector_offsets_" identifier -> field_identifier) = identifier) ;) (if_statement "if (uVar21 == 0) {\n    iVar17 = 0;\n  }\n  else {\n    ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start;\n    uVar18 = 0;\n    iVar17 = 0;\n    do {\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    } while (uVar18 != uVar21);\n  }" if (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar17 = 0;\n  }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start;\n    uVar18 = 0;\n    iVar17 = 0;\n    do {\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    } while (uVar18 != uVar21);\n  }" else (compound_statement "{\n    ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start;\n    uVar18 = 0;\n    iVar17 = 0;\n    do {\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    } while (uVar18 != uVar21);\n  }" { (ERROR "ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>*,_std::allocator<std::vector<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int,_unsigned_char>,_std" (binary_expression "ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std::pair<int" (binary_expression "ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std::vector<std" (assignment_expression "ppvVar2 = (this->cu_vector_list_).\n              super__Vector_base<std" identifier = (binary_expression "(this->cu_vector_list_).\n              super__Vector_base<std" (field_expression "(this->cu_vector_list_).\n              super__Vector_base" (parenthesized_expression "(this->cu_vector_list_)" ( (field_expression "this->cu_vector_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>_>_>*,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_>*,_std" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<int,_unsigned_char>,_std" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start;" (comma_expression "pair<int,_unsigned_char>_>_>*>_>\n              ._M_impl._M_start" (binary_expression "pair<int" identifier < identifier) , (field_expression "_unsigned_char>_>_>*>_>\n              ._M_impl._M_start" (field_expression "_unsigned_char>_>_>*>_>\n              ._M_impl" (binary_expression "_unsigned_char>_>_>*>_" (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier) > (pointer_expression "*>_" * (ERROR ">" >) identifier)) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    } while (uVar18 != uVar21);" do (compound_statement "{\n      pvVar3 = ppvVar2[uVar18];\n      *(int *)(poVar14 + uVar18) = iVar17;\n      *(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;\n      uVar18 = uVar18 + 1;\n      iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;\n    }" { (expression_statement "pvVar3 = ppvVar2[uVar18];" (assignment_expression "pvVar3 = ppvVar2[uVar18]" identifier = (subscript_expression "ppvVar2[uVar18]" identifier [ identifier ])) ;) (expression_statement "*(int *)(poVar14 + uVar18) = iVar17;" (assignment_expression "*(int *)(poVar14 + uVar18) = iVar17" (pointer_expression "*(int *)(poVar14 + uVar18)" * (cast_expression "(int *)(poVar14 + uVar18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(poVar14 + uVar18)" ( (binary_expression "poVar14 + uVar18" identifier + identifier) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)poVar14 + uVar18 * 8 + 4) = 0" (pointer_expression "*(undefined4 *)((int)poVar14 + uVar18 * 8 + 4)" * (cast_expression "(undefined4 *)((int)poVar14 + uVar18 * 8 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)poVar14 + uVar18 * 8 + 4)" ( (binary_expression "(int)poVar14 + uVar18 * 8 + 4" (binary_expression "(int)poVar14 + uVar18 * 8" (cast_expression "(int)poVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar18 * 8" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4;" (assignment_expression "iVar17 = iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4" identifier = (binary_expression "iVar17 + 4 +\n               ((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4" (binary_expression "iVar17 + 4" identifier + number_literal) + (binary_expression "((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3) * 4" (parenthesized_expression "((int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3)" ( (binary_expression "(int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start >> 3" (binary_expression "(int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish -\n                (int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start" (cast_expression "(int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish" ( (type_descriptor "int" primitive_type) ) (field_expression "(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_finish" (field_expression "(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl" (parenthesized_expression "(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )" ( (ERROR "pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std" (binary_expression "pvVar3->\n                     super__Vector_base<std::pair<int" (binary_expression "pvVar3->\n                     super__Vector_base<std" (field_expression "pvVar3->\n                     super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (comma_expression "pair<int,_unsigned_char>_>_" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier)) (ERROR ">" >) )) . field_identifier) . field_identifier)) - (cast_expression "(int)(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start" ( (type_descriptor "int" primitive_type) ) (field_expression "(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl._M_start" (field_expression "(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )._M_impl" (parenthesized_expression "(pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::pair<int,_unsigned_char>_>_>\n                     )" ( (ERROR "pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std::allocator<std::" (comma_expression "pvVar3->\n                     super__Vector_base<std::pair<int,_unsigned_char>,_std" (binary_expression "pvVar3->\n                     super__Vector_base<std::pair<int" (binary_expression "pvVar3->\n                     super__Vector_base<std" (field_expression "pvVar3->\n                     super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_char>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (comma_expression "pair<int,_unsigned_char>_>_" (binary_expression "pair<int" identifier < identifier) , (binary_expression "_unsigned_char>_>_" (binary_expression "_unsigned_char>_" identifier > identifier) > identifier)) (ERROR ">" >) )) . field_identifier) . field_identifier))) >> number_literal) )) * number_literal))) ;) }) while (parenthesized_expression "(uVar18 != uVar21)" ( (binary_expression "uVar18 != uVar21" identifier != identifier) )) ;) }))) (ERROR "pCVar4 = (this->comp_units_).\n           super__Vector_base<gold::" (assignment_expression "pCVar4 = (this->comp_units_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->comp_units_).\n           super__Vector_base<gold" (field_expression "(this->comp_units_).\n           super__Vector_base" (parenthesized_expression "(this->comp_units_)" ( (field_expression "this->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;" statement_identifier (ERROR "::Comp_unit,_std::allocator<gold:" : : (comma_expression "Comp_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>_>\n           ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>_>\n           ._M_impl._M_finish;" (field_expression "Comp_unit>_>\n           ._M_impl._M_finish" (field_expression "Comp_unit>_>\n           ._M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (ERROR "pCVar5 = (this->comp_units_).\n           super__Vector_base<gold::" (assignment_expression "pCVar5 = (this->comp_units_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->comp_units_).\n           super__Vector_base<gold" (field_expression "(this->comp_units_).\n           super__Vector_base" (parenthesized_expression "(this->comp_units_)" ( (field_expression "this->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;" statement_identifier (ERROR "::Comp_unit,_std::allocator<gold:" : : (comma_expression "Comp_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>_>\n           ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>_>\n           ._M_impl._M_start;" (field_expression "Comp_unit>_>\n           ._M_impl._M_start" (field_expression "Comp_unit>_>\n           ._M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "*(undefined4 *)((int)&this->tu_offset_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->tu_offset_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->tu_offset_ + 4)" * (cast_expression "(undefined4 *)((int)&this->tu_offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->tu_offset_ + 4)" ( (binary_expression "(int)&this->tu_offset_ + 4" (cast_expression "(int)&this->tu_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->tu_offset_" & (field_expression "this->tu_offset_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "iVar19 = (int)pCVar4 + (0x18 - (int)pCVar5);" (assignment_expression "iVar19 = (int)pCVar4 + (0x18 - (int)pCVar5)" identifier = (binary_expression "(int)pCVar4 + (0x18 - (int)pCVar5)" (cast_expression "(int)pCVar4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x18 - (int)pCVar5)" ( (binary_expression "0x18 - (int)pCVar5" number_literal - (cast_expression "(int)pCVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (ERROR "pTVar6 = (this->type_units_).\n           super__Vector_base<gold::" (assignment_expression "pTVar6 = (this->type_units_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->type_units_).\n           super__Vector_base<gold" (field_expression "(this->type_units_).\n           super__Vector_base" (parenthesized_expression "(this->type_units_)" ( (field_expression "this->type_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_finish;" statement_identifier (ERROR "::Type_unit,_std::allocator<gold:" : : (comma_expression "Type_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit>_>\n           ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Type_unit>_>\n           ._M_impl._M_finish;" (field_expression "Type_unit>_>\n           ._M_impl._M_finish" (field_expression "Type_unit>_>\n           ._M_impl" (binary_expression "Type_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (ERROR "pTVar7 = (this->type_units_).\n           super__Vector_base<gold::" (assignment_expression "pTVar7 = (this->type_units_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->type_units_).\n           super__Vector_base<gold" (field_expression "(this->type_units_).\n           super__Vector_base" (parenthesized_expression "(this->type_units_)" ( (field_expression "this->type_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n           ._M_impl._M_start;" statement_identifier (ERROR "::Type_unit,_std::allocator<gold:" : : (comma_expression "Type_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit>_>\n           ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Type_unit>_>\n           ._M_impl._M_start;" (field_expression "Type_unit>_>\n           ._M_impl._M_start" (field_expression "Type_unit>_>\n           ._M_impl" (binary_expression "Type_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "*(undefined4 *)((int)&this->addr_offset_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->addr_offset_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->addr_offset_ + 4)" * (cast_expression "(undefined4 *)((int)&this->addr_offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->addr_offset_ + 4)" ( (binary_expression "(int)&this->addr_offset_ + 4" (cast_expression "(int)&this->addr_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->addr_offset_" & (field_expression "this->addr_offset_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "iVar16 = (int)pTVar6 + (iVar19 - (int)pTVar7);" (assignment_expression "iVar16 = (int)pTVar6 + (iVar19 - (int)pTVar7)" identifier = (binary_expression "(int)pTVar6 + (iVar19 - (int)pTVar7)" (cast_expression "(int)pTVar6" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(iVar19 - (int)pTVar7)" ( (binary_expression "iVar19 - (int)pTVar7" identifier - (cast_expression "(int)pTVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*(int *)&this->tu_offset_ = iVar19;" (assignment_expression "*(int *)&this->tu_offset_ = iVar19" (pointer_expression "*(int *)&this->tu_offset_" * (cast_expression "(int *)&this->tu_offset_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->tu_offset_" & (field_expression "this->tu_offset_" identifier -> field_identifier)))) = identifier) ;) (ERROR "pPVar8 = (this->ranges_).\n           super__Vector_base<gold::" (assignment_expression "pPVar8 = (this->ranges_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->ranges_).\n           super__Vector_base<gold" (field_expression "(this->ranges_).\n           super__Vector_base" (parenthesized_expression "(this->ranges_)" ( (field_expression "this->ranges_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_finish;" statement_identifier (ERROR "::Per_cu_range_list,_std::allocator<gold:" : : (comma_expression "Per_cu_range_list,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Per_cu_range_list>_>\n           ._M_impl._M_finish;" (field_expression "Per_cu_range_list>_>\n           ._M_impl._M_finish" (field_expression "Per_cu_range_list>_>\n           ._M_impl" (binary_expression "Per_cu_range_list>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (ERROR "pPVar9 = (this->ranges_).\n           super__Vector_base<gold::" (assignment_expression "pPVar9 = (this->ranges_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->ranges_).\n           super__Vector_base<gold" (field_expression "(this->ranges_).\n           super__Vector_base" (parenthesized_expression "(this->ranges_)" ( (field_expression "this->ranges_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Per_cu_range_list,_std::allocator<gold::Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_start;" statement_identifier (ERROR "::Per_cu_range_list,_std::allocator<gold:" : : (comma_expression "Per_cu_range_list,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Per_cu_range_list>_>\n           ._M_impl._M_start;" statement_identifier : (ERROR ":" :) (expression_statement "Per_cu_range_list>_>\n           ._M_impl._M_start;" (field_expression "Per_cu_range_list>_>\n           ._M_impl._M_start" (field_expression "Per_cu_range_list>_>\n           ._M_impl" (binary_expression "Per_cu_range_list>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) (expression_statement "*(int *)&this->addr_offset_ = iVar16;" (assignment_expression "*(int *)&this->addr_offset_ = iVar16" (pointer_expression "*(int *)&this->addr_offset_" * (cast_expression "(int *)&this->addr_offset_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->addr_offset_" & (field_expression "this->addr_offset_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "iVar19 = (int)pPVar8 - (int)pPVar9;" (assignment_expression "iVar19 = (int)pPVar8 - (int)pPVar9" identifier = (binary_expression "(int)pPVar8 - (int)pPVar9" (cast_expression "(int)pPVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar9" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((iVar19 >> 2) * -0x55555555 != 0) {\n    ppDVar15 = &pPVar9->ranges;\n    piVar20 = (int *)(iVar19 + (int)ppDVar15);\n    do {\n      pDVar10 = *ppDVar15;\n      ppDVar15 = ppDVar15 + 3;\n      iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);\n    } while ((Dwarf_range_list **)piVar20 != ppDVar15);\n  }" if (parenthesized_expression "((iVar19 >> 2) * -0x55555555 != 0)" ( (binary_expression "(iVar19 >> 2) * -0x55555555 != 0" (binary_expression "(iVar19 >> 2) * -0x55555555" (parenthesized_expression "(iVar19 >> 2)" ( (binary_expression "iVar19 >> 2" identifier >> number_literal) )) * number_literal) != number_literal) )) (compound_statement "{\n    ppDVar15 = &pPVar9->ranges;\n    piVar20 = (int *)(iVar19 + (int)ppDVar15);\n    do {\n      pDVar10 = *ppDVar15;\n      ppDVar15 = ppDVar15 + 3;\n      iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);\n    } while ((Dwarf_range_list **)piVar20 != ppDVar15);\n  }" { (expression_statement "ppDVar15 = &pPVar9->ranges;" (assignment_expression "ppDVar15 = &pPVar9->ranges" identifier = (pointer_expression "&pPVar9->ranges" & (field_expression "pPVar9->ranges" identifier -> field_identifier))) ;) (expression_statement "piVar20 = (int *)(iVar19 + (int)ppDVar15);" (assignment_expression "piVar20 = (int *)(iVar19 + (int)ppDVar15)" identifier = (cast_expression "(int *)(iVar19 + (int)ppDVar15)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + (int)ppDVar15)" ( (binary_expression "iVar19 + (int)ppDVar15" identifier + (cast_expression "(int)ppDVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n      pDVar10 = *ppDVar15;\n      ppDVar15 = ppDVar15 + 3;\n      iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);\n    } while ((Dwarf_range_list **)piVar20 != ppDVar15);" do (compound_statement "{\n      pDVar10 = *ppDVar15;\n      ppDVar15 = ppDVar15 + 3;\n      iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);\n    }" { (expression_statement "pDVar10 = *ppDVar15;" (assignment_expression "pDVar10 = *ppDVar15" identifier = (pointer_expression "*ppDVar15" * identifier)) ;) (expression_statement "ppDVar15 = ppDVar15 + 3;" (assignment_expression "ppDVar15 = ppDVar15 + 3" identifier = (binary_expression "ppDVar15 + 3" identifier + number_literal)) ;) (ERROR "iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold::" (assignment_expression "iVar16 = (int)(pDVar10->range_list_).\n                    super__Vector_base<gold" identifier = (binary_expression "(int)(pDVar10->range_list_).\n                    super__Vector_base<gold" (cast_expression "(int)(pDVar10->range_list_).\n                    super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(pDVar10->range_list_).\n                    super__Vector_base" (parenthesized_expression "(pDVar10->range_list_)" ( (field_expression "pDVar10->range_list_" identifier -> field_identifier) )) . field_identifier)) < identifier)) : :) (labeled_statement "Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);" statement_identifier (ERROR "::Range,_std::allocator<gold:" : : (comma_expression "Range,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Dwarf_range_list::Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);" statement_identifier : (ERROR ":" :) (expression_statement "Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start);" (binary_expression "Range>_>\n                    ._M_impl._M_finish +\n               (iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start)" (field_expression "Range>_>\n                    ._M_impl._M_finish" (field_expression "Range>_>\n                    ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) + (parenthesized_expression "(iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::Range>_>\n                              ._M_impl._M_start)" ( (ERROR "iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std::allocator<gold::Dwarf_range_list::" (comma_expression "iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold::Dwarf_range_list::Range,_std" (binary_expression "iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base<gold" (binary_expression "iVar16 - (int)(pDVar10->range_list_).\n                              super__Vector_base" identifier - (cast_expression "(int)(pDVar10->range_list_).\n                              super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(pDVar10->range_list_).\n                              super__Vector_base" (parenthesized_expression "(pDVar10->range_list_)" ( (field_expression "pDVar10->range_list_" identifier -> field_identifier) )) . field_identifier))) < identifier) (ERROR "::Dwarf_range_list::Range" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Range>_>\n                              ._M_impl._M_start" (field_expression "Range>_>\n                              ._M_impl" (binary_expression "Range>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ))) ;))) }) while (parenthesized_expression "((Dwarf_range_list **)piVar20 != ppDVar15)" ( (binary_expression "(Dwarf_range_list **)piVar20 != ppDVar15" (cast_expression "(Dwarf_range_list **)piVar20" ( (type_descriptor "Dwarf_range_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) != identifier) )) ;) })) (expression_statement "pGVar11 = this->gdb_symtab_;" (assignment_expression "pGVar11 = this->gdb_symtab_" identifier = (field_expression "this->gdb_symtab_" identifier -> field_identifier)) ;) (expression_statement "*(int *)&this->symtab_offset_ = iVar16;" (assignment_expression "*(int *)&this->symtab_offset_ = iVar16" (pointer_expression "*(int *)&this->symtab_offset_" * (cast_expression "(int *)&this->symtab_offset_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->symtab_offset_" & (field_expression "this->symtab_offset_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(undefined4 *)((int)&this->symtab_offset_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->symtab_offset_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->symtab_offset_ + 4)" * (cast_expression "(undefined4 *)((int)&this->symtab_offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->symtab_offset_ + 4)" ( (binary_expression "(int)&this->symtab_offset_ + 4" (cast_expression "(int)&this->symtab_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->symtab_offset_" & (field_expression "this->symtab_offset_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "sVar12 = pGVar11->capacity_;" (assignment_expression "sVar12 = pGVar11->capacity_" identifier = (field_expression "pGVar11->capacity_" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&this->cu_pool_offset_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->cu_pool_offset_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->cu_pool_offset_ + 4)" * (cast_expression "(undefined4 *)((int)&this->cu_pool_offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->cu_pool_offset_ + 4)" ( (binary_expression "(int)&this->cu_pool_offset_ + 4" (cast_expression "(int)&this->cu_pool_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->cu_pool_offset_" & (field_expression "this->cu_pool_offset_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->stringpool_offset_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->stringpool_offset_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->stringpool_offset_ + 4)" * (cast_expression "(undefined4 *)((int)&this->stringpool_offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->stringpool_offset_ + 4)" ( (binary_expression "(int)&this->stringpool_offset_ + 4" (cast_expression "(int)&this->stringpool_offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->stringpool_offset_" & (field_expression "this->stringpool_offset_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "iVar16 = iVar16 + sVar12 * 8;" (assignment_expression "iVar16 = iVar16 + sVar12 * 8" identifier = (binary_expression "iVar16 + sVar12 * 8" identifier + (binary_expression "sVar12 * 8" identifier * number_literal))) ;) (expression_statement "iVar17 = iVar17 + iVar16;" (assignment_expression "iVar17 = iVar17 + iVar16" identifier = (binary_expression "iVar17 + iVar16" identifier + identifier)) ;) (expression_statement "*(int *)&this->cu_pool_offset_ = iVar16;" (assignment_expression "*(int *)&this->cu_pool_offset_ = iVar16" (pointer_expression "*(int *)&this->cu_pool_offset_" * (cast_expression "(int *)&this->cu_pool_offset_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->cu_pool_offset_" & (field_expression "this->cu_pool_offset_" identifier -> field_identifier)))) = identifier) ;) (expression_statement "sVar13 = (this->stringpool_).strtab_size_;" (assignment_expression "sVar13 = (this->stringpool_).strtab_size_" identifier = (field_expression "(this->stringpool_).strtab_size_" (parenthesized_expression "(this->stringpool_)" ( (field_expression "this->stringpool_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(int *)&this->stringpool_offset_ = iVar17;" (assignment_expression "*(int *)&this->stringpool_offset_ = iVar17" (pointer_expression "*(int *)&this->stringpool_offset_" * (cast_expression "(int *)&this->stringpool_offset_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->stringpool_offset_" & (field_expression "this->stringpool_offset_" identifier -> field_identifier)))) = identifier) ;) (if_statement "if (sVar13 == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size");\n  }" if (parenthesized_expression "(sVar13 == 0)" ( (binary_expression "sVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size");" (call_expression "do_gold_unreachable("../../gold/stringpool.h",0x111,"get_strtab_size")" identifier (argument_list "("../../gold/stringpool.h",0x111,"get_strtab_size")" ( (string_literal ""../../gold/stringpool.h"" " string_content ") , number_literal , (string_literal ""get_strtab_size"" " string_content ") ))) ;) })) (expression_statement "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x1c;" (assignment_expression "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x1c" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.field_0x1c" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =\n         iVar17 + sVar13;\n    *(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;\n    (this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =\n         iVar17 + sVar13;\n    *(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;\n    (this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2;\n    return;\n  }" { (expression_statement "*(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =\n         iVar17 + sVar13;" (assignment_expression "*(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_ =\n         iVar17 + sVar13" (pointer_expression "*(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_" * (cast_expression "(section_size_type *)&(this->super_Output_section_data).super_Output_data.data_size_" ( (type_descriptor "section_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->super_Output_section_data).super_Output_data.data_size_" & (field_expression "(this->super_Output_section_data).super_Output_data.data_size_" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier)))) = (binary_expression "iVar17 + sVar13" identifier + identifier)) ;) (expression_statement "*(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4)" * (cast_expression "(undefined4 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4)" ( (binary_expression "(int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4" (cast_expression "(int)&(this->super_Output_section_data).super_Output_data.data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_section_data).super_Output_data.data_size_" & (field_expression "(this->super_Output_section_data).super_Output_data.data_size_" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "(this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2;" (assignment_expression "(this->super_Output_section_data).super_Output_data.field_0x1c = bVar1 | 2" (field_expression "(this->super_Output_section_data).super_Output_data.field_0x1c" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;) })))
(translation_unit "void FUN_00240010(int param_1)\n\n{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    \n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}\n\n" (function_definition "void FUN_00240010(int param_1)\n\n{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    \n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}" primitive_type (function_declarator "FUN_00240010(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    \n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (expression_statement "FUN_00074f0e();" (call_expression "FUN_00074f0e()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0034b2b0(param_1 + 0xa8);" (call_expression "FUN_0034b2b0(param_1 + 0xa8)" identifier (argument_list "(param_1 + 0xa8)" ( (binary_expression "param_1 + 0xa8" identifier + number_literal) ))) ;) (expression_statement "uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;" (assignment_expression "uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2" identifier = (binary_expression "*(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2" (binary_expression "*(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98)" (pointer_expression "*(int *)(param_1 + 0x9c)" * (cast_expression "(int *)(param_1 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (0xfffffff < uVar9) {\n                    \n    FUN_003ada10();\n  }" if (parenthesized_expression "(0xfffffff < uVar9)" ( (binary_expression "0xfffffff < uVar9" number_literal < identifier) )) (compound_statement "{\n                    \n    FUN_003ada10();\n  }" { (expression_statement "FUN_003ada10();" (call_expression "FUN_003ada10()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar3 = FUN_003ac450(uVar9 * 8);" (assignment_expression "iVar3 = FUN_003ac450(uVar9 * 8)" identifier = (call_expression "FUN_003ac450(uVar9 * 8)" identifier (argument_list "(uVar9 * 8)" ( (binary_expression "uVar9 * 8" identifier * number_literal) )))) ;) (expression_statement "*(int *)(param_1 + 0xa4) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xa4) = iVar3" (pointer_expression "*(int *)(param_1 + 0xa4)" * (cast_expression "(int *)(param_1 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xa4)" ( (binary_expression "param_1 + 0xa4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar6 = 0;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" else (compound_statement "{\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x98);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x98)" identifier = (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);" do (compound_statement "{\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    }" { (expression_statement "piVar4 = *(int **)(iVar5 + uVar7 * 4);" (assignment_expression "piVar4 = *(int **)(iVar5 + uVar7 * 4)" identifier = (pointer_expression "*(int **)(iVar5 + uVar7 * 4)" * (cast_expression "(int **)(iVar5 + uVar7 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + uVar7 * 4)" ( (binary_expression "iVar5 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(int *)(iVar3 + uVar7 * 8) = iVar6;" (assignment_expression "*(int *)(iVar3 + uVar7 * 8) = iVar6" (pointer_expression "*(int *)(iVar3 + uVar7 * 8)" * (cast_expression "(int *)(iVar3 + uVar7 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + uVar7 * 8)" ( (binary_expression "iVar3 + uVar7 * 8" identifier + (binary_expression "uVar7 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 4 + uVar7 * 8)" * (cast_expression "(undefined4 *)(iVar3 + 4 + uVar7 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4 + uVar7 * 8)" ( (binary_expression "iVar3 + 4 + uVar7 * 8" (binary_expression "iVar3 + 4" identifier + number_literal) + (binary_expression "uVar7 * 8" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;" (assignment_expression "iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4" identifier = (binary_expression "iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4" (binary_expression "iVar6 + 4" identifier + number_literal) + (binary_expression "(piVar4[1] - *piVar4 >> 3) * 4" (parenthesized_expression "(piVar4[1] - *piVar4 >> 3)" ( (binary_expression "piVar4[1] - *piVar4 >> 3" (binary_expression "piVar4[1] - *piVar4" (subscript_expression "piVar4[1]" identifier [ number_literal ]) - (pointer_expression "*piVar4" * identifier)) >> number_literal) )) * number_literal))) ;) }) while (parenthesized_expression "(uVar7 != uVar9)" ( (binary_expression "uVar7 != uVar9" identifier != identifier) )) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" * (cast_expression "(undefined4 *)(param_1 + 0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;" (assignment_expression "iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18" identifier = (binary_expression "(*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18" (parenthesized_expression "(*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70))" ( (binary_expression "*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x70)" * (cast_expression "(int *)(param_1 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) )) + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x100) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x100) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x100)" * (cast_expression "(undefined4 *)(param_1 + 0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;" (assignment_expression "iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3" identifier = (binary_expression "(*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3" (parenthesized_expression "(*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c))" ( (binary_expression "*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)" (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x7c)" * (cast_expression "(int *)(param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7c)" ( (binary_expression "param_1 + 0x7c" identifier + number_literal) ))))) )) + identifier)) ;) (expression_statement "*(int *)(param_1 + 0xf4) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xf4) = iVar3" (pointer_expression "*(int *)(param_1 + 0xf4)" * (cast_expression "(int *)(param_1 + 0xf4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf4)" ( (binary_expression "param_1 + 0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0xfc) = iVar5;" (assignment_expression "*(int *)(param_1 + 0xfc) = iVar5" (pointer_expression "*(int *)(param_1 + 0xfc)" * (cast_expression "(int *)(param_1 + 0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xfc)" ( (binary_expression "param_1 + 0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88)" identifier = (binary_expression "*(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88)" (pointer_expression "*(int *)(param_1 + 0x8c)" * (cast_expression "(int *)(param_1 + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x8c)" ( (binary_expression "param_1 + 0x8c" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))))) ;) (if_statement "if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }" if (parenthesized_expression "((iVar3 >> 2) * -0x55555555 != 0)" ( (binary_expression "(iVar3 >> 2) * -0x55555555 != 0" (binary_expression "(iVar3 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 >> 2)" ( (binary_expression "iVar3 >> 2" identifier >> number_literal) )) * number_literal) != number_literal) )) (compound_statement "{\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }" { (expression_statement "piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);" (assignment_expression "piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x88) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x88) + 8)" ( (binary_expression "*(int *)(param_1 + 0x88) + 8" (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "piVar8 = (int *)(iVar3 + (int)piVar4);" (assignment_expression "piVar8 = (int *)(iVar3 + (int)piVar4)" identifier = (cast_expression "(int *)(iVar3 + (int)piVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (int)piVar4)" ( (binary_expression "iVar3 + (int)piVar4" identifier + (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);" do (compound_statement "{\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    }" { (expression_statement "piVar2 = (int *)*piVar4;" (assignment_expression "piVar2 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "piVar4 = piVar4 + 3;" (assignment_expression "piVar4 = piVar4 + 3" identifier = (binary_expression "piVar4 + 3" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar5 + (piVar2[1] - *piVar2);" (assignment_expression "iVar5 = iVar5 + (piVar2[1] - *piVar2)" identifier = (binary_expression "iVar5 + (piVar2[1] - *piVar2)" identifier + (parenthesized_expression "(piVar2[1] - *piVar2)" ( (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" identifier [ number_literal ]) - (pointer_expression "*piVar2" * identifier)) )))) ;) }) while (parenthesized_expression "(piVar8 != piVar4)" ( (binary_expression "piVar8 != piVar4" identifier != identifier) )) ;) })) (expression_statement "*(int *)(param_1 + 0x104) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x104) = iVar5" (pointer_expression "*(int *)(param_1 + 0x104)" * (cast_expression "(int *)(param_1 + 0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x104)" ( (binary_expression "param_1 + 0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x108) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x108) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x108)" * (cast_expression "(undefined4 *)(param_1 + 0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);" (assignment_expression "iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x94) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0x94) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x94) + 4)" ( (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" * (cast_expression "(int *)(param_1 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x94)" ( (binary_expression "param_1 + 0x94" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" * (cast_expression "(undefined4 *)(param_1 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x118) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x118) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x118)" * (cast_expression "(undefined4 *)(param_1 + 0x118)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x118)" ( (binary_expression "param_1 + 0x118" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = iVar5 + iVar3 * 8;" (assignment_expression "iVar5 = iVar5 + iVar3 * 8" identifier = (binary_expression "iVar5 + iVar3 * 8" identifier + (binary_expression "iVar3 * 8" identifier * number_literal))) ;) (expression_statement "iVar6 = iVar6 + iVar5;" (assignment_expression "iVar6 = iVar6 + iVar5" identifier = (binary_expression "iVar6 + iVar5" identifier + identifier)) ;) (expression_statement "*(int *)(param_1 + 0x10c) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x10c) = iVar5" (pointer_expression "*(int *)(param_1 + 0x10c)" * (cast_expression "(int *)(param_1 + 0x10c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10c)" ( (binary_expression "param_1 + 0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x114) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x114) = iVar6" (pointer_expression "*(int *)(param_1 + 0x114)" * (cast_expression "(int *)(param_1 + 0x114)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x114)" ( (binary_expression "param_1 + 0x114" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(param_1 + 0xe0) == 0) {\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xe0) == 0)" ( (binary_expression "*(int *)(param_1 + 0xe0) == 0" (pointer_expression "*(int *)(param_1 + 0xe0)" * (cast_expression "(int *)(param_1 + 0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }" { (expression_statement "FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);" (call_expression "FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6)" identifier (argument_list "(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6)" ( (binary_expression "unaff_EBP + 0x246c50" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x247086" identifier + number_literal) , identifier ))) ;) })) (expression_statement "bVar1 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x1c)" identifier = (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = iVar6 + *(int *)(param_1 + 0xe0);" (assignment_expression "iVar6 = iVar6 + *(int *)(param_1 + 0xe0)" identifier = (binary_expression "iVar6 + *(int *)(param_1 + 0xe0)" identifier + (pointer_expression "*(int *)(param_1 + 0xe0)" * (cast_expression "(int *)(param_1 + 0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))))) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" { (expression_statement "*(int *)(param_1 + 0xc) = iVar6;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar6" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 0x1c) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x1c) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" * (cast_expression "(byte *)(param_1 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);" (call_expression "FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6)" identifier (argument_list "(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6)" ( (binary_expression "unaff_EBP + 0x20d347" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x247076" identifier + number_literal) , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) >> LIT) )) * LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })))
(function_definition "void FUN_00240010(int param_1)\n\n{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    \n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}" (primitive_type "void") (function_declarator "FUN_00240010(int param_1)" (identifier "FUN_00240010") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  int iVar3;\n  int *piVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int *piVar8;\n  int unaff_EBP;\n  uint uVar9;\n  \n  FUN_00074f0e();\n  FUN_0034b2b0(param_1 + 0xa8);\n  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;\n  if (0xfffffff < uVar9) {\n                    \n    FUN_003ada10();\n  }\n  iVar3 = FUN_003ac450(uVar9 * 8);\n  *(int *)(param_1 + 0xa4) = iVar3;\n  if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }\n  *(undefined4 *)(param_1 + 0xf8) = 0;\n  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;\n  *(undefined4 *)(param_1 + 0x100) = 0;\n  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;\n  *(int *)(param_1 + 0xf4) = iVar3;\n  *(int *)(param_1 + 0xfc) = iVar5;\n  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);\n  if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }\n  *(int *)(param_1 + 0x104) = iVar5;\n  *(undefined4 *)(param_1 + 0x108) = 0;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);\n  *(undefined4 *)(param_1 + 0x110) = 0;\n  *(undefined4 *)(param_1 + 0x118) = 0;\n  iVar5 = iVar5 + iVar3 * 8;\n  iVar6 = iVar6 + iVar5;\n  *(int *)(param_1 + 0x10c) = iVar5;\n  *(int *)(param_1 + 0x114) = iVar6;\n  if (*(int *)(param_1 + 0xe0) == 0) {\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }\n  bVar1 = *(byte *)(param_1 + 0x1c);\n  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (expression_statement "FUN_00074f0e();" (call_expression "FUN_00074f0e()" (identifier "FUN_00074f0e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0034b2b0(param_1 + 0xa8);" (call_expression "FUN_0034b2b0(param_1 + 0xa8)" (identifier "FUN_0034b2b0") (argument_list "(param_1 + 0xa8)" (( "(") (binary_expression "param_1 + 0xa8" (identifier "param_1") (+ "+") (number_literal "0xa8")) () ")"))) (; ";")) (expression_statement "uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;" (assignment_expression "uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2" (identifier "uVar9") (= "=") (binary_expression "*(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2" (binary_expression "*(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98)" (pointer_expression "*(int *)(param_1 + 0x9c)" (* "*") (cast_expression "(int *)(param_1 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x9c)" (( "(") (binary_expression "param_1 + 0x9c" (identifier "param_1") (+ "+") (number_literal "0x9c")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0x98)" (* "*") (cast_expression "(int *)(param_1 + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (0xfffffff < uVar9) {\n                    \n    FUN_003ada10();\n  }" (if "if") (parenthesized_expression "(0xfffffff < uVar9)" (( "(") (binary_expression "0xfffffff < uVar9" (number_literal "0xfffffff") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n                    \n    FUN_003ada10();\n  }" ({ "{") (expression_statement "FUN_003ada10();" (call_expression "FUN_003ada10()" (identifier "FUN_003ada10") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_003ac450(uVar9 * 8);" (assignment_expression "iVar3 = FUN_003ac450(uVar9 * 8)" (identifier "iVar3") (= "=") (call_expression "FUN_003ac450(uVar9 * 8)" (identifier "FUN_003ac450") (argument_list "(uVar9 * 8)" (( "(") (binary_expression "uVar9 * 8" (identifier "uVar9") (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0xa4) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xa4) = iVar3" (pointer_expression "*(int *)(param_1 + 0xa4)" (* "*") (cast_expression "(int *)(param_1 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xa4)" (( "(") (binary_expression "param_1 + 0xa4" (identifier "param_1") (+ "+") (number_literal "0xa4")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (uVar9 == 0) {\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" (if "if") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar6 = 0;\n  }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" (else "else") (compound_statement "{\n    iVar5 = *(int *)(param_1 + 0x98);\n    uVar7 = 0;\n    iVar6 = 0;\n    do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);\n  }" ({ "{") (expression_statement "iVar5 = *(int *)(param_1 + 0x98);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x98)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x98)" (* "*") (cast_expression "(int *)(param_1 + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    } while (uVar7 != uVar9);" (do "do") (compound_statement "{\n      piVar4 = *(int **)(iVar5 + uVar7 * 4);\n      *(int *)(iVar3 + uVar7 * 8) = iVar6;\n      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;\n      uVar7 = uVar7 + 1;\n      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;\n    }" ({ "{") (expression_statement "piVar4 = *(int **)(iVar5 + uVar7 * 4);" (assignment_expression "piVar4 = *(int **)(iVar5 + uVar7 * 4)" (identifier "piVar4") (= "=") (pointer_expression "*(int **)(iVar5 + uVar7 * 4)" (* "*") (cast_expression "(int **)(iVar5 + uVar7 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + uVar7 * 4)" (( "(") (binary_expression "iVar5 + uVar7 * 4" (identifier "iVar5") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar3 + uVar7 * 8) = iVar6;" (assignment_expression "*(int *)(iVar3 + uVar7 * 8) = iVar6" (pointer_expression "*(int *)(iVar3 + uVar7 * 8)" (* "*") (cast_expression "(int *)(iVar3 + uVar7 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + uVar7 * 8)" (( "(") (binary_expression "iVar3 + uVar7 * 8" (identifier "iVar3") (+ "+") (binary_expression "uVar7 * 8" (identifier "uVar7") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;" (assignment_expression "*(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0" (pointer_expression "*(undefined4 *)(iVar3 + 4 + uVar7 * 8)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 4 + uVar7 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4 + uVar7 * 8)" (( "(") (binary_expression "iVar3 + 4 + uVar7 * 8" (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) (+ "+") (binary_expression "uVar7 * 8" (identifier "uVar7") (* "*") (number_literal "8"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;" (assignment_expression "iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4" (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) (+ "+") (binary_expression "(piVar4[1] - *piVar4 >> 3) * 4" (parenthesized_expression "(piVar4[1] - *piVar4 >> 3)" (( "(") (binary_expression "piVar4[1] - *piVar4 >> 3" (binary_expression "piVar4[1] - *piVar4" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 != uVar9)" (( "(") (binary_expression "uVar7 != uVar9" (identifier "uVar7") (!= "!=") (identifier "uVar9")) () ")")) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0xf8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xf8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xf8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;" (assignment_expression "iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18" (identifier "iVar3") (= "=") (binary_expression "(*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18" (parenthesized_expression "(*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70))" (( "(") (binary_expression "*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0x70)" (* "*") (cast_expression "(int *)(param_1 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x100) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x100) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x100)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x100)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;" (assignment_expression "iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3" (identifier "iVar5") (= "=") (binary_expression "(*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3" (parenthesized_expression "(*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c))" (( "(") (binary_expression "*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)" (pointer_expression "*(int *)(param_1 + 0x80)" (* "*") (cast_expression "(int *)(param_1 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0x7c)" (* "*") (cast_expression "(int *)(param_1 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7c)" (( "(") (binary_expression "param_1 + 0x7c" (identifier "param_1") (+ "+") (number_literal "0x7c")) () ")"))))) () ")")) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "*(int *)(param_1 + 0xf4) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xf4) = iVar3" (pointer_expression "*(int *)(param_1 + 0xf4)" (* "*") (cast_expression "(int *)(param_1 + 0xf4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf4)" (( "(") (binary_expression "param_1 + 0xf4" (identifier "param_1") (+ "+") (number_literal "0xf4")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(int *)(param_1 + 0xfc) = iVar5;" (assignment_expression "*(int *)(param_1 + 0xfc) = iVar5" (pointer_expression "*(int *)(param_1 + 0xfc)" (* "*") (cast_expression "(int *)(param_1 + 0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xfc)" (( "(") (binary_expression "param_1 + 0xfc" (identifier "param_1") (+ "+") (number_literal "0xfc")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88)" (identifier "iVar3") (= "=") (binary_expression "*(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88)" (pointer_expression "*(int *)(param_1 + 0x8c)" (* "*") (cast_expression "(int *)(param_1 + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x8c)" (( "(") (binary_expression "param_1 + 0x8c" (identifier "param_1") (+ "+") (number_literal "0x8c")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0x88)" (* "*") (cast_expression "(int *)(param_1 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")")))))) (; ";")) (if_statement "if ((iVar3 >> 2) * -0x55555555 != 0) {\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }" (if "if") (parenthesized_expression "((iVar3 >> 2) * -0x55555555 != 0)" (( "(") (binary_expression "(iVar3 >> 2) * -0x55555555 != 0" (binary_expression "(iVar3 >> 2) * -0x55555555" (parenthesized_expression "(iVar3 >> 2)" (( "(") (binary_expression "iVar3 >> 2" (identifier "iVar3") (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);\n    piVar8 = (int *)(iVar3 + (int)piVar4);\n    do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);\n  }" ({ "{") (expression_statement "piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);" (assignment_expression "piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8)" (identifier "piVar4") (= "=") (cast_expression "(int *)(*(int *)(param_1 + 0x88) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x88) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x88) + 8" (pointer_expression "*(int *)(param_1 + 0x88)" (* "*") (cast_expression "(int *)(param_1 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "piVar8 = (int *)(iVar3 + (int)piVar4);" (assignment_expression "piVar8 = (int *)(iVar3 + (int)piVar4)" (identifier "piVar8") (= "=") (cast_expression "(int *)(iVar3 + (int)piVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + (int)piVar4)" (( "(") (binary_expression "iVar3 + (int)piVar4" (identifier "iVar3") (+ "+") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) () ")")))) (; ";")) (do_statement "do {\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    } while (piVar8 != piVar4);" (do "do") (compound_statement "{\n      piVar2 = (int *)*piVar4;\n      piVar4 = piVar4 + 3;\n      iVar5 = iVar5 + (piVar2[1] - *piVar2);\n    }" ({ "{") (expression_statement "piVar2 = (int *)*piVar4;" (assignment_expression "piVar2 = (int *)*piVar4" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (; ";")) (expression_statement "piVar4 = piVar4 + 3;" (assignment_expression "piVar4 = piVar4 + 3" (identifier "piVar4") (= "=") (binary_expression "piVar4 + 3" (identifier "piVar4") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "iVar5 = iVar5 + (piVar2[1] - *piVar2);" (assignment_expression "iVar5 = iVar5 + (piVar2[1] - *piVar2)" (identifier "iVar5") (= "=") (binary_expression "iVar5 + (piVar2[1] - *piVar2)" (identifier "iVar5") (+ "+") (parenthesized_expression "(piVar2[1] - *piVar2)" (( "(") (binary_expression "piVar2[1] - *piVar2" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar8 != piVar4)" (( "(") (binary_expression "piVar8 != piVar4" (identifier "piVar8") (!= "!=") (identifier "piVar4")) () ")")) (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 0x104) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x104) = iVar5" (pointer_expression "*(int *)(param_1 + 0x104)" (* "*") (cast_expression "(int *)(param_1 + 0x104)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x104)" (( "(") (binary_expression "param_1 + 0x104" (identifier "param_1") (+ "+") (number_literal "0x104")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x108) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x108) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x108)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x108)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);" (assignment_expression "iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x94) + 4)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x94) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x94) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x94) + 4" (pointer_expression "*(int *)(param_1 + 0x94)" (* "*") (cast_expression "(int *)(param_1 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x94)" (( "(") (binary_expression "param_1 + 0x94" (identifier "param_1") (+ "+") (number_literal "0x94")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x110) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x110)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x118) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x118) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x118)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x118)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x118)" (( "(") (binary_expression "param_1 + 0x118" (identifier "param_1") (+ "+") (number_literal "0x118")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = iVar5 + iVar3 * 8;" (assignment_expression "iVar5 = iVar5 + iVar3 * 8" (identifier "iVar5") (= "=") (binary_expression "iVar5 + iVar3 * 8" (identifier "iVar5") (+ "+") (binary_expression "iVar3 * 8" (identifier "iVar3") (* "*") (number_literal "8")))) (; ";")) (expression_statement "iVar6 = iVar6 + iVar5;" (assignment_expression "iVar6 = iVar6 + iVar5" (identifier "iVar6") (= "=") (binary_expression "iVar6 + iVar5" (identifier "iVar6") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x10c) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x10c) = iVar5" (pointer_expression "*(int *)(param_1 + 0x10c)" (* "*") (cast_expression "(int *)(param_1 + 0x10c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10c)" (( "(") (binary_expression "param_1 + 0x10c" (identifier "param_1") (+ "+") (number_literal "0x10c")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(int *)(param_1 + 0x114) = iVar6;" (assignment_expression "*(int *)(param_1 + 0x114) = iVar6" (pointer_expression "*(int *)(param_1 + 0x114)" (* "*") (cast_expression "(int *)(param_1 + 0x114)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x114)" (( "(") (binary_expression "param_1 + 0x114" (identifier "param_1") (+ "+") (number_literal "0x114")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (*(int *)(param_1 + 0xe0) == 0) {\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xe0) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xe0) == 0" (pointer_expression "*(int *)(param_1 + 0xe0)" (* "*") (cast_expression "(int *)(param_1 + 0xe0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);\n  }" ({ "{") (expression_statement "FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);" (call_expression "FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6)" (identifier "FUN_002446e0") (argument_list "(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6)" (( "(") (binary_expression "unaff_EBP + 0x246c50" (identifier "unaff_EBP") (+ "+") (number_literal "0x246c50")) (, ",") (number_literal "0x111") (, ",") (binary_expression "unaff_EBP + 0x247086" (identifier "unaff_EBP") (+ "+") (number_literal "0x247086")) (, ",") (identifier "iVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "bVar1 = *(byte *)(param_1 + 0x1c);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x1c)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "iVar6 = iVar6 + *(int *)(param_1 + 0xe0);" (assignment_expression "iVar6 = iVar6 + *(int *)(param_1 + 0xe0)" (identifier "iVar6") (= "=") (binary_expression "iVar6 + *(int *)(param_1 + 0xe0)" (identifier "iVar6") (+ "+") (pointer_expression "*(int *)(param_1 + 0xe0)" (* "*") (cast_expression "(int *)(param_1 + 0xe0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")")))))) (; ";")) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" (if "if") (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" (( "(") (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((bVar1 & 8) == 0)" (( "(") (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" (( "(") (binary_expression "bVar1 & 8" (identifier "bVar1") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(int *)(param_1 + 0xc) = iVar6;\n    *(undefined4 *)(param_1 + 0x10) = 0;\n    *(byte *)(param_1 + 0x1c) = bVar1 | 2;\n    return;\n  }" ({ "{") (expression_statement "*(int *)(param_1 + 0xc) = iVar6;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar6" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x10) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(param_1 + 0x1c) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x1c) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x1c)" (* "*") (cast_expression "(byte *)(param_1 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (binary_expression "bVar1 | 2" (identifier "bVar1") (| "|") (number_literal "2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);" (call_expression "FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6)" (identifier "FUN_002446e0") (argument_list "(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6)" (( "(") (binary_expression "unaff_EBP + 0x20d347" (identifier "unaff_EBP") (+ "+") (number_literal "0x20d347")) (, ",") (number_literal "0x218") (, ",") (binary_expression "unaff_EBP + 0x247076" (identifier "unaff_EBP") (+ "+") (number_literal "0x247076")) (, ",") (identifier "iVar6") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void set_final_data_size(Gdb_index * this) */

void __thiscall gold::type_1::function_1(type_1 *this)

{
  type_2 var_25;
  type_3 ppvVar2;
  vector<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4> *pvVar3;
  type_3 pCVar4;
  type_3 pCVar5;
  type_3 pTVar6;
  type_3 pTVar7;
  type_3 pPVar8;
  type_3 pPVar9;
  type_4 *pDVar10;
  Gdb_hashtab<gold::Gdb_index::var_5> *pGVar11;
  size_t var_22;
  type_5 var_23;
  type_6 *var_12;
  type_4 **var_19;
  int var_21;
  int var_14;
  type_7 var_13;
  int var_17;
  int *piVar20;
  type_7 var_9;
  
  var_6<var_7>::var_8(&this->stringpool_);
  var_9 = (int)(this->cu_vector_list_).
                super__Vector_base<std::vector<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>*,_std::allocator<std::vector<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>*>var_4>
                ._M_impl._M_finish -
           (int)(this->cu_vector_list_).
                super__Vector_base<std::vector<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>*,_std::allocator<std::vector<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>*>var_4>
                ._M_impl._M_start >> 2;
  if (0xfffffff < var_9) {
                    /* WARNING: Subroutine does not return */
    var_10();
  }
  var_12 = (type_6 *)var_11(var_9 * 8);
  this->cu_vector_offsets_ = var_12;
  if (var_9 == 0) {
    var_14 = 0;
  }
  else {
    ppvVar2 = (this->cu_vector_list_).
              super__Vector_base<std::vector<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>*,_std::allocator<std::vector<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>*>var_4>
              ._M_impl._M_start;
    var_13 = 0;
    var_14 = 0;
    do {
      pvVar3 = ppvVar2[var_13];
      *(int *)(var_12 + var_13) = var_14;
      *(type_8 *)((int)var_12 + var_13 * 8 + 4) = 0;
      var_13 = var_13 + 1;
      var_14 = var_14 + 4 +
               ((int)(pvVar3->
                     super__Vector_base<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>
                     )._M_impl._M_finish -
                (int)(pvVar3->
                     super__Vector_base<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>
                     )._M_impl._M_start >> 3) * 4;
    } while (var_13 != var_9);
  }
  pCVar4 = (this->comp_units_).
           super__Vector_base<gold::Gdb_index::var_15,_std::allocator<gold::Gdb_index::var_15>var_4>
           ._M_impl._M_finish;
  pCVar5 = (this->comp_units_).
           super__Vector_base<gold::Gdb_index::var_15,_std::allocator<gold::Gdb_index::var_15>var_4>
           ._M_impl._M_start;
  *(type_8 *)((int)&this->tu_offset_ + 4) = 0;
  var_17 = (int)pCVar4 + (0x18 - (int)pCVar5);
  pTVar6 = (this->type_units_).
           super__Vector_base<gold::Gdb_index::var_16,_std::allocator<gold::Gdb_index::var_16>var_4>
           ._M_impl._M_finish;
  pTVar7 = (this->type_units_).
           super__Vector_base<gold::Gdb_index::var_16,_std::allocator<gold::Gdb_index::var_16>var_4>
           ._M_impl._M_start;
  *(type_8 *)((int)&this->addr_offset_ + 4) = 0;
  var_21 = (int)pTVar6 + (var_17 - (int)pTVar7);
  *(int *)&this->tu_offset_ = var_17;
  pPVar8 = (this->ranges_).
           super__Vector_base<gold::Gdb_index::var_18,_std::allocator<gold::Gdb_index::var_18>var_4>
           ._M_impl._M_finish;
  pPVar9 = (this->ranges_).
           super__Vector_base<gold::Gdb_index::var_18,_std::allocator<gold::Gdb_index::var_18>var_4>
           ._M_impl._M_start;
  *(int *)&this->addr_offset_ = var_21;
  var_17 = (int)pPVar8 - (int)pPVar9;
  if ((var_17 >> 2) * -0x55555555 != 0) {
    var_19 = &pPVar9->ranges;
    piVar20 = (int *)(var_17 + (int)var_19);
    do {
      pDVar10 = *var_19;
      var_19 = var_19 + 3;
      var_21 = (int)(pDVar10->range_list_).
                    super__Vector_base<gold::Dwarf_range_list::var_20,_std::allocator<gold::Dwarf_range_list::var_20>var_4>
                    ._M_impl._M_finish +
               (var_21 - (int)(pDVar10->range_list_).
                              super__Vector_base<gold::type_4::var_20,_std::allocator<gold::type_4::var_20>var_4>
                              ._M_impl._M_start);
    } while ((type_4 **)piVar20 != var_19);
  }
  pGVar11 = this->gdb_symtab_;
  *(int *)&this->symtab_offset_ = var_21;
  *(type_8 *)((int)&this->symtab_offset_ + 4) = 0;
  var_22 = pGVar11->capacity_;
  *(type_8 *)((int)&this->cu_pool_offset_ + 4) = 0;
  *(type_8 *)((int)&this->stringpool_offset_ + 4) = 0;
  var_21 = var_21 + var_22 * 8;
  var_14 = var_14 + var_21;
  *(int *)&this->cu_pool_offset_ = var_21;
  var_23 = (this->stringpool_).strtab_size_;
  *(int *)&this->stringpool_offset_ = var_14;
  if (var_23 == 0) {
                    /* WARNING: Subroutine does not return */
    var_24("../../gold/stringpool.h",0x111,"get_strtab_size");
  }
  var_25 = (this->super_Output_section_data).super_Output_data.field_0x1c;
  if (((var_25 & 2) == 0) && ((var_25 & 8) == 0)) {
    *(type_5 *)&(this->super_Output_section_data).super_Output_data.data_size_ =
         var_14 + var_23;
    *(type_8 *)((int)&(this->super_Output_section_data).super_Output_data.data_size_ + 4) = 0;
    (this->super_Output_section_data).super_Output_data.field_0x1c = var_25 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_24("../../gold/output.h",0x218,"set_data_size");
}


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

void MASKED(int param_1)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int *piVar8;
  int unaff_EBP;
  uint uVar9;
  
  FUN_00074f0e();
  FUN_0034b2b0(param_1 + 0xa8);
  uVar9 = *(int *)(param_1 + 0x9c) - *(int *)(param_1 + 0x98) >> 2;
  if (0xfffffff < uVar9) {
                    /* WARNING: Subroutine does not return */
    FUN_003ada10();
  }
  iVar3 = FUN_003ac450(uVar9 * 8);
  *(int *)(param_1 + 0xa4) = iVar3;
  if (uVar9 == 0) {
    iVar6 = 0;
  }
  else {
    iVar5 = *(int *)(param_1 + 0x98);
    uVar7 = 0;
    iVar6 = 0;
    do {
      piVar4 = *(int **)(iVar5 + uVar7 * 4);
      *(int *)(iVar3 + uVar7 * 8) = iVar6;
      *(undefined4 *)(iVar3 + 4 + uVar7 * 8) = 0;
      uVar7 = uVar7 + 1;
      iVar6 = iVar6 + 4 + (piVar4[1] - *piVar4 >> 3) * 4;
    } while (uVar7 != uVar9);
  }
  *(undefined4 *)(param_1 + 0xf8) = 0;
  iVar3 = (*(int *)(param_1 + 0x74) - *(int *)(param_1 + 0x70)) + 0x18;
  *(undefined4 *)(param_1 + 0x100) = 0;
  iVar5 = (*(int *)(param_1 + 0x80) - *(int *)(param_1 + 0x7c)) + iVar3;
  *(int *)(param_1 + 0xf4) = iVar3;
  *(int *)(param_1 + 0xfc) = iVar5;
  iVar3 = *(int *)(param_1 + 0x8c) - *(int *)(param_1 + 0x88);
  if ((iVar3 >> 2) * -0x55555555 != 0) {
    piVar4 = (int *)(*(int *)(param_1 + 0x88) + 8);
    piVar8 = (int *)(iVar3 + (int)piVar4);
    do {
      piVar2 = (int *)*piVar4;
      piVar4 = piVar4 + 3;
      iVar5 = iVar5 + (piVar2[1] - *piVar2);
    } while (piVar8 != piVar4);
  }
  *(int *)(param_1 + 0x104) = iVar5;
  *(undefined4 *)(param_1 + 0x108) = 0;
  iVar3 = *(int *)(*(int *)(param_1 + 0x94) + 4);
  *(undefined4 *)(param_1 + 0x110) = 0;
  *(undefined4 *)(param_1 + 0x118) = 0;
  iVar5 = iVar5 + iVar3 * 8;
  iVar6 = iVar6 + iVar5;
  *(int *)(param_1 + 0x10c) = iVar5;
  *(int *)(param_1 + 0x114) = iVar6;
  if (*(int *)(param_1 + 0xe0) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0(unaff_EBP + 0x246c50,0x111,unaff_EBP + 0x247086,iVar6);
  }
  bVar1 = *(byte *)(param_1 + 0x1c);
  iVar6 = iVar6 + *(int *)(param_1 + 0xe0);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    *(int *)(param_1 + 0xc) = iVar6;
    *(undefined4 *)(param_1 + 0x10) = 0;
    *(byte *)(param_1 + 0x1c) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0(unaff_EBP + 0x20d347,0x218,unaff_EBP + 0x247076,iVar6);
}

