
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void visit_type_unit(Gdb_index_info_reader * this, off_t tu_offset,
   off_t param_2, off_t type_offset, uint64_t signature, Dwarf_die * root_die) */

void __thiscall
gold::Gdb_index_info_reader::visit_type_unit
          (Gdb_index_info_reader *this,off_t tu_offset,off_t param_2,off_t type_offset,
          uint64_t signature,Dwarf_die *root_die)

{
  pointer pTVar1;
  iterator __position;
  undefined4 in_a2;
  undefined4 in_a3;
  Gdb_index *pGVar2;
  Type_unit local_28;
  
  pGVar2 = this->gdb_index_;
  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;
  __position._M_current =
       (pGVar2->type_units_).
       super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.
       _M_impl._M_finish;
  if (__position._M_current ==
      (pGVar2->type_units_).
      super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.
      _M_impl._M_end_of_storage) {
    local_28.type_offset = param_2;
    local_28.type_signature = type_offset;
    std::vector<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::
    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);
    pTVar1 = (pGVar2->type_units_).
             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>
             ._M_impl._M_finish;
    param_2 = local_28.type_offset;
    type_offset = local_28.type_signature;
  }
  else {
    pTVar1 = __position._M_current + 1;
    *(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;
    *(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;
    *(undefined4 *)&(__position._M_current)->tu_offset = in_a2;
    *(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;
    (__position._M_current)->type_signature = type_offset;
    (pGVar2->type_units_).
    super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.
    _M_impl._M_finish = pTVar1;
  }
  this->cu_index_ =
       ((int)pTVar1 -
        (int)(pGVar2->type_units_).
             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>
             ._M_impl._M_start >> 3) * 0x55555555;
  local_28.type_offset = param_2;
  local_28.type_signature = type_offset;
  visit_top_die(this,signature._0_4_);
  return;
}



void FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,
                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  
  iVar3 = *(int *)(param_1 + 0x4d8);
  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;
  puVar2 = *(undefined4 **)(iVar3 + 0x84);
  local_1c = param_8;
  local_20 = param_7;
  local_14 = param_10;
  local_18 = param_9;
  local_28 = param_3;
  local_24 = param_4;
  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {
    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::
    _M_realloc_insert<gold::Gdb_index::Type_unit>
              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)
               (iVar3 + 0x80),puVar2,&local_28);
    puVar1 = *(undefined4 **)(iVar3 + 0x84);
  }
  else {
    puVar1 = puVar2 + 6;
    puVar2[1] = param_4;
    puVar2[2] = param_7;
    *puVar2 = param_3;
    puVar2[3] = param_8;
    puVar2[4] = param_9;
    puVar2[5] = param_10;
    *(undefined4 **)(iVar3 + 0x84) = puVar1;
  }
  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;
  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);
  return;
}


lui gp,0x35
addiu gp,gp,-0x30b4
addu gp,gp,t9
lw v1,-0x5ab4(gp)
addiu sp,sp,-0x40
sw s0,0x34(sp)
sw gp,0x10(sp)
lw v0,0x0(v1)
lw s0,0x4d8(a0)
sw s1,0x38(sp)
or s1,a0,zero
addiu v0,v0,0x1
sw ra,0x3c(sp)
sw a3,0x1c(sp)
sw v0,0x0(v1)
lw v1,0x5c(sp)
lw v0,0x58(sp)
lw a1,0x84(s0)
lw a0,0x88(s0)
sw v1,0x24(sp)
sw v0,0x20(sp)
sw a2,0x18(sp)
lw v1,0x64(sp)
lw v0,0x60(sp)
sw v1,0x2c(sp)
beq a1,a0,0x0017c3dc
_sw v0,0x28(sp)
lw t0,0x1c(sp)
addiu v0,a1,0x18
lw a3,0x20(sp)
lw a2,0x24(sp)
lw a0,0x28(sp)
lw v1,0x2c(sp)
lw t1,0x18(sp)
sw t0,0x4(a1)
sw a3,0x8(a1)
sw t1,0x0(a1)
sw a2,0xc(a1)
sw a0,0x10(a1)
sw v1,0x14(a1)
sw v0,0x84(s0)
lw v1,0x80(s0)
or a0,s1,zero
lw a1,0x68(sp)
lw t9,-0x59fc(gp)
subu v0,v0,v1
lui v1,0xaaaa
sra v0,v0,0x3
ori v1,v1,0xaaab
mul v0,v0,v1
subu v0,zero,v0
bal 0x0017c080
_sw v0,0x4dc(s1)
lw ra,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x59f4(gp)
addiu a2,sp,0x18
bal 0x0017cbf0
_addiu a0,s0,0x80
lw gp,0x10(sp)
b 0x0017c398
_lw v0,0x84(s0)
(translation_unit "void FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}\n\n" (function_definition "void FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}" primitive_type (function_declarator "FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)" identifier (parameter_list "(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)" ( (parameter_declaration "Gdb_index_info_reader *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "Dwarf_die *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x4d8);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x4d8)" identifier = (pointer_expression "*(int *)(param_1 + 0x4d8)" * (cast_expression "(int *)(param_1 + 0x4d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4d8)" ( (binary_expression "param_1 + 0x4d8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;" (assignment_expression "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" * (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" * (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (expression_statement "puVar2 = *(undefined4 **)(iVar3 + 0x84);" (assignment_expression "puVar2 = *(undefined4 **)(iVar3 + 0x84)" identifier = (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "local_1c = param_8;" (assignment_expression "local_1c = param_8" identifier = identifier) ;) (expression_statement "local_20 = param_7;" (assignment_expression "local_20 = param_7" identifier = identifier) ;) (expression_statement "local_14 = param_10;" (assignment_expression "local_14 = param_10" identifier = identifier) ;) (expression_statement "local_18 = param_9;" (assignment_expression "local_18 = param_9" identifier = identifier) ;) (expression_statement "local_28 = param_3;" (assignment_expression "local_28 = param_3" identifier = identifier) ;) (expression_statement "local_24 = param_4;" (assignment_expression "local_24 = param_4" identifier = identifier) ;) (if_statement "if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" if (parenthesized_expression "(puVar2 == *(undefined4 **)(iVar3 + 0x88))" ( (binary_expression "puVar2 == *(undefined4 **)(iVar3 + 0x88)" identifier == (pointer_expression "*(undefined4 **)(iVar3 + 0x88)" * (cast_expression "(undefined4 **)(iVar3 + 0x88)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x88)" ( (binary_expression "iVar3 + 0x88" identifier + number_literal) ))))) )) (compound_statement "{\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }" { (labeled_statement "std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier (ERROR "::vector<gold:" : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" 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_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier (ERROR "::Type_unit>>::\n    _M_realloc_insert<gold:" : : identifier >> : : (binary_expression "_M_realloc_insert<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier (ERROR "::Type_unit>\n              ((vector<gold:" : : identifier > ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" 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               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier : (ERROR ":" :) (expression_statement "Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (comma_expression "Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28" (binary_expression "Type_unit>> *)\n               (iVar3 + 0x80)" identifier >> (pointer_expression "*)\n               (iVar3 + 0x80)" * (ERROR ")" )) (parenthesized_expression "(iVar3 + 0x80)" ( (binary_expression "iVar3 + 0x80" identifier + number_literal) )))) , (comma_expression "puVar2,&local_28" identifier , (pointer_expression "&local_28" & identifier))) (ERROR ")" )) ;))))))) (expression_statement "puVar1 = *(undefined4 **)(iVar3 + 0x84);" (assignment_expression "puVar1 = *(undefined4 **)(iVar3 + 0x84)" identifier = (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" else (compound_statement "{\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" { (expression_statement "puVar1 = puVar2 + 6;" (assignment_expression "puVar1 = puVar2 + 6" identifier = (binary_expression "puVar2 + 6" identifier + number_literal)) ;) (expression_statement "puVar2[1] = param_4;" (assignment_expression "puVar2[1] = param_4" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[2] = param_7;" (assignment_expression "puVar2[2] = param_7" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar2 = param_3;" (assignment_expression "*puVar2 = param_3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2[3] = param_8;" (assignment_expression "puVar2[3] = param_8" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[4] = param_9;" (assignment_expression "puVar2[4] = param_9" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[5] = param_10;" (assignment_expression "puVar2[5] = param_10" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 **)(iVar3 + 0x84) = puVar1;" (assignment_expression "*(undefined4 **)(iVar3 + 0x84) = puVar1" (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;" (assignment_expression "*(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555" (pointer_expression "*(int *)(param_1 + 0x4dc)" * (cast_expression "(int *)(param_1 + 0x4dc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4dc)" ( (binary_expression "param_1 + 0x4dc" identifier + number_literal) )))) = (binary_expression "((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555" (parenthesized_expression "((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3)" ( (binary_expression "(int)puVar1 - *(int *)(iVar3 + 0x80) >> 3" (binary_expression "(int)puVar1 - *(int *)(iVar3 + 0x80)" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(iVar3 + 0x80)" * (cast_expression "(int *)(iVar3 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x80)" ( (binary_expression "iVar3 + 0x80" identifier + number_literal) ))))) >> number_literal) )) * number_literal)) ;) (labeled_statement "gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);" statement_identifier : (ERROR ":" :) (labeled_statement "Gdb_index_info_reader::visit_top_die(param_1,param_11);" statement_identifier : (ERROR ":" :) (expression_statement "visit_top_die(param_1,param_11);" (call_expression "visit_top_die(param_1,param_11)" identifier (argument_list "(param_1,param_11)" ( identifier , identifier ))) ;))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: void visit_type_unit(Gdb_index_info_reader * this, off_t tu_offset,\n   off_t param_2, off_t type_offset, uint64_t signature, Dwarf_die * root_die) */\n\nvoid __thiscall\ngold::Gdb_index_info_reader::visit_type_unit\n          (Gdb_index_info_reader *this,off_t tu_offset,off_t param_2,off_t type_offset,\n          uint64_t signature,Dwarf_die *root_die)\n\n{\n  pointer pTVar1;\n  iterator __position;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  Gdb_index *pGVar2;\n  Type_unit local_28;\n  \n  pGVar2 = this->gdb_index_;\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  __position._M_current =\n       (pGVar2->type_units_).\n       super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n       _M_impl._M_finish;\n  if (__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n      _M_impl._M_end_of_storage) {\n    local_28.type_offset = param_2;\n    local_28.type_signature = type_offset;\n    std::vector<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);\n    pTVar1 = (pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_finish;\n    param_2 = local_28.type_offset;\n    type_offset = local_28.type_signature;\n  }\n  else {\n    pTVar1 = __position._M_current + 1;\n    *(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;\n    *(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;\n    *(undefined4 *)&(__position._M_current)->tu_offset = in_a2;\n    *(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;\n    (__position._M_current)->type_signature = type_offset;\n    (pGVar2->type_units_).\n    super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n    _M_impl._M_finish = pTVar1;\n  }\n  this->cu_index_ =\n       ((int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_start >> 3) * 0x55555555;\n  local_28.type_offset = param_2;\n  local_28.type_signature = type_offset;\n  visit_top_die(this,signature._0_4_);\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Gdb_index_info_reader::visit_type_unit\n          (Gdb_index_info_reader *this,off_t tu_offset,off_t param_2,off_t type_offset,\n          uint64_t signature,Dwarf_die *root_die)\n\n{\n  pointer pTVar1;\n  iterator __position;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  Gdb_index *pGVar2;\n  Type_unit local_28;\n  \n  pGVar2 = this->gdb_index_;\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  __position._M_current =\n       (pGVar2->type_units_).\n       super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n       _M_impl._M_finish;\n  if (__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n      _M_impl._M_end_of_storage) {\n    local_28.type_offset = param_2;\n    local_28.type_signature = type_offset;\n    std::vector<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);\n    pTVar1 = (pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_finish;\n    param_2 = local_28.type_offset;\n    type_offset = local_28.type_signature;\n  }\n  else {\n    pTVar1 = __position._M_current + 1;\n    *(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;\n    *(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;\n    *(undefined4 *)&(__position._M_current)->tu_offset = in_a2;\n    *(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;\n    (__position._M_current)->type_signature = type_offset;\n    (pGVar2->type_units_).\n    super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n    _M_impl._M_finish = pTVar1;\n  }\n  this->cu_index_ =\n       ((int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_start >> 3) * 0x55555555;\n  local_28.type_offset = param_2;\n  local_28.type_signature = type_offset;\n  visit_top_die(this,signature._0_4_);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "visit_type_unit\n          (Gdb_index_info_reader *this,off_t tu_offset,off_t param_2,off_t type_offset,\n          uint64_t signature,Dwarf_die *root_die)" identifier (parameter_list "(Gdb_index_info_reader *this,off_t tu_offset,off_t param_2,off_t type_offset,\n          uint64_t signature,Dwarf_die *root_die)" ( (parameter_declaration "Gdb_index_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t tu_offset" type_identifier identifier) , (parameter_declaration "off_t param_2" type_identifier identifier) , (parameter_declaration "off_t type_offset" type_identifier identifier) , (parameter_declaration "uint64_t signature" primitive_type identifier) , (parameter_declaration "Dwarf_die *root_die" type_identifier (pointer_declarator "*root_die" * identifier)) ))) (compound_statement "{\n  pointer pTVar1;\n  iterator __position;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  Gdb_index *pGVar2;\n  Type_unit local_28;\n  \n  pGVar2 = this->gdb_index_;\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  __position._M_current =\n       (pGVar2->type_units_).\n       super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n       _M_impl._M_finish;\n  if (__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n      _M_impl._M_end_of_storage) {\n    local_28.type_offset = param_2;\n    local_28.type_signature = type_offset;\n    std::vector<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);\n    pTVar1 = (pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_finish;\n    param_2 = local_28.type_offset;\n    type_offset = local_28.type_signature;\n  }\n  else {\n    pTVar1 = __position._M_current + 1;\n    *(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;\n    *(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;\n    *(undefined4 *)&(__position._M_current)->tu_offset = in_a2;\n    *(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;\n    (__position._M_current)->type_signature = type_offset;\n    (pGVar2->type_units_).\n    super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n    _M_impl._M_finish = pTVar1;\n  }\n  this->cu_index_ =\n       ((int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_start >> 3) * 0x55555555;\n  local_28.type_offset = param_2;\n  local_28.type_signature = type_offset;\n  visit_top_die(this,signature._0_4_);\n  return;\n}" { (declaration "pointer pTVar1;" type_identifier identifier ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "Gdb_index *pGVar2;" type_identifier (pointer_declarator "*pGVar2" * identifier) ;) (declaration "Type_unit local_28;" type_identifier identifier ;) (expression_statement "pGVar2 = this->gdb_index_;" (assignment_expression "pGVar2 = this->gdb_index_" identifier = (field_expression "this->gdb_index_" identifier -> field_identifier)) ;) (expression_statement "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;" (assignment_expression "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" * (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" * (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (ERROR "__position._M_current =\n       (pGVar2->type_units_).\n       super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::" (comma_expression "__position._M_current =\n       (pGVar2->type_units_).\n       super__Vector_base<gold::Gdb_index::Type_unit,_std" (assignment_expression "__position._M_current =\n       (pGVar2->type_units_).\n       super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(pGVar2->type_units_).\n       super__Vector_base<gold" (field_expression "(pGVar2->type_units_).\n       super__Vector_base" (parenthesized_expression "(pGVar2->type_units_)" ( (field_expression "pGVar2->type_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Gdb_index::Type_unit" : : identifier : : 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) ;)) (if_statement "if (__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n      _M_impl._M_end_of_storage) {\n    local_28.type_offset = param_2;\n    local_28.type_signature = type_offset;\n    std::vector<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);\n    pTVar1 = (pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_finish;\n    param_2 = local_28.type_offset;\n    type_offset = local_28.type_signature;\n  }\n  else {\n    pTVar1 = __position._M_current + 1;\n    *(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;\n    *(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;\n    *(undefined4 *)&(__position._M_current)->tu_offset = in_a2;\n    *(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;\n    (__position._M_current)->type_signature = type_offset;\n    (pGVar2->type_units_).\n    super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n    _M_impl._M_finish = pTVar1;\n  }" if (parenthesized_expression "(__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n      _M_impl._M_end_of_storage)" ( (ERROR "__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::" (comma_expression "__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold::Gdb_index::Type_unit,_std" (binary_expression "__position._M_current ==\n      (pGVar2->type_units_).\n      super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(pGVar2->type_units_).\n      super__Vector_base<gold" (field_expression "(pGVar2->type_units_).\n      super__Vector_base" (parenthesized_expression "(pGVar2->type_units_)" ( (field_expression "pGVar2->type_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Gdb_index::Type_unit" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Type_unit>_>.\n      _M_impl._M_end_of_storage" (field_expression "Type_unit>_>.\n      _M_impl" (binary_expression "Type_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    local_28.type_offset = param_2;\n    local_28.type_signature = type_offset;\n    std::vector<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);\n    pTVar1 = (pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_finish;\n    param_2 = local_28.type_offset;\n    type_offset = local_28.type_signature;\n  }" { (expression_statement "local_28.type_offset = param_2;" (assignment_expression "local_28.type_offset = param_2" (field_expression "local_28.type_offset" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.type_signature = type_offset;" (assignment_expression "local_28.type_signature = type_offset" (field_expression "local_28.type_signature" identifier . field_identifier) = identifier) ;) (labeled_statement "std::vector<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);" statement_identifier (ERROR "::vector<gold:" : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);" 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_realloc_insert<gold::Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);" statement_identifier (ERROR "::Type_unit>_>::\n    _M_realloc_insert<gold:" : : (binary_expression "Type_unit>_" identifier > identifier) > : : (binary_expression "_M_realloc_insert<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit>(&pGVar2->type_units_,__position,&local_28);" statement_identifier : (ERROR ":" :) (expression_statement "Type_unit>(&pGVar2->type_units_,__position,&local_28);" (binary_expression "Type_unit>(&pGVar2->type_units_,__position,&local_28)" identifier > (parenthesized_expression "(&pGVar2->type_units_,__position,&local_28)" ( (comma_expression "&pGVar2->type_units_,__position,&local_28" (pointer_expression "&pGVar2->type_units_" & (field_expression "pGVar2->type_units_" identifier -> field_identifier)) , (comma_expression "__position,&local_28" identifier , (pointer_expression "&local_28" & identifier))) ))) ;))))) (ERROR "pTVar1 = (pGVar2->type_units_).\n             super__Vector_base<gold::" (assignment_expression "pTVar1 = (pGVar2->type_units_).\n             super__Vector_base<gold" identifier = (binary_expression "(pGVar2->type_units_).\n             super__Vector_base<gold" (field_expression "(pGVar2->type_units_).\n             super__Vector_base" (parenthesized_expression "(pGVar2->type_units_)" ( (field_expression "pGVar2->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) ;))) (expression_statement "param_2 = local_28.type_offset;" (assignment_expression "param_2 = local_28.type_offset" identifier = (field_expression "local_28.type_offset" identifier . field_identifier)) ;) (expression_statement "type_offset = local_28.type_signature;" (assignment_expression "type_offset = local_28.type_signature" identifier = (field_expression "local_28.type_signature" identifier . field_identifier)) ;) }) (else_clause "else {\n    pTVar1 = __position._M_current + 1;\n    *(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;\n    *(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;\n    *(undefined4 *)&(__position._M_current)->tu_offset = in_a2;\n    *(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;\n    (__position._M_current)->type_signature = type_offset;\n    (pGVar2->type_units_).\n    super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n    _M_impl._M_finish = pTVar1;\n  }" else (compound_statement "{\n    pTVar1 = __position._M_current + 1;\n    *(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;\n    *(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;\n    *(undefined4 *)&(__position._M_current)->tu_offset = in_a2;\n    *(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;\n    (__position._M_current)->type_signature = type_offset;\n    (pGVar2->type_units_).\n    super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>.\n    _M_impl._M_finish = pTVar1;\n  }" { (expression_statement "pTVar1 = __position._M_current + 1;" (assignment_expression "pTVar1 = __position._M_current + 1" identifier = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (expression_statement "*(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;" (assignment_expression "*(undefined4 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3" (pointer_expression "*(undefined4 *)((int)&(__position._M_current)->tu_offset + 4)" * (cast_expression "(undefined4 *)((int)&(__position._M_current)->tu_offset + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->tu_offset + 4)" ( (binary_expression "(int)&(__position._M_current)->tu_offset + 4" (cast_expression "(int)&(__position._M_current)->tu_offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__position._M_current)->tu_offset" & (field_expression "(__position._M_current)->tu_offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_;" (assignment_expression "*(undefined4 *)&(__position._M_current)->type_offset = param_2._0_4_" (pointer_expression "*(undefined4 *)&(__position._M_current)->type_offset" * (cast_expression "(undefined4 *)&(__position._M_current)->type_offset" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->type_offset" & (field_expression "(__position._M_current)->type_offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = (field_expression "param_2._0_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)&(__position._M_current)->tu_offset = in_a2;" (assignment_expression "*(undefined4 *)&(__position._M_current)->tu_offset = in_a2" (pointer_expression "*(undefined4 *)&(__position._M_current)->tu_offset" * (cast_expression "(undefined4 *)&(__position._M_current)->tu_offset" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->tu_offset" & (field_expression "(__position._M_current)->tu_offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = identifier) ;) (expression_statement "*(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;" (assignment_expression "*(undefined4 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_" (pointer_expression "*(undefined4 *)((int)&(__position._M_current)->type_offset + 4)" * (cast_expression "(undefined4 *)((int)&(__position._M_current)->type_offset + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->type_offset + 4)" ( (binary_expression "(int)&(__position._M_current)->type_offset + 4" (cast_expression "(int)&(__position._M_current)->type_offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__position._M_current)->type_offset" & (field_expression "(__position._M_current)->type_offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier))) + number_literal) )))) = (field_expression "param_2._4_4_" identifier . field_identifier)) ;) (expression_statement "(__position._M_current)->type_signature = type_offset;" (assignment_expression "(__position._M_current)->type_signature = type_offset" (field_expression "(__position._M_current)->type_signature" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = identifier) ;) (ERROR "(pGVar2->type_units_).\n    super__Vector_base<gold::" (binary_expression "(pGVar2->type_units_).\n    super__Vector_base<gold" (field_expression "(pGVar2->type_units_).\n    super__Vector_base" (parenthesized_expression "(pGVar2->type_units_)" ( (field_expression "pGVar2->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 = pTVar1;" 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 = pTVar1;" statement_identifier : (ERROR ":" :) (expression_statement "Type_unit>_>.\n    _M_impl._M_finish = pTVar1;" (assignment_expression "Type_unit>_>.\n    _M_impl._M_finish = pTVar1" (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) = identifier) ;))) }))) (expression_statement "this->cu_index_ =\n       ((int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_start >> 3) * 0x55555555;" (assignment_expression "this->cu_index_ =\n       ((int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_start >> 3) * 0x55555555" (field_expression "this->cu_index_" identifier -> field_identifier) = (binary_expression "((int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_start >> 3) * 0x55555555" (parenthesized_expression "((int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::Type_unit>_>\n             ._M_impl._M_start >> 3)" ( (ERROR "(int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std::allocator<gold::Gdb_index::" (comma_expression "(int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold::Gdb_index::Type_unit,_std" (binary_expression "(int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base<gold" (binary_expression "(int)pTVar1 -\n        (int)(pGVar2->type_units_).\n             super__Vector_base" (cast_expression "(int)pTVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)(pGVar2->type_units_).\n             super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(pGVar2->type_units_).\n             super__Vector_base" (parenthesized_expression "(pGVar2->type_units_)" ( (field_expression "pGVar2->type_units_" identifier -> field_identifier) )) . field_identifier))) < identifier) (ERROR "::Gdb_index::Type_unit" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Type_unit>_>\n             ._M_impl._M_start >> 3" (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) >> number_literal) )) * number_literal)) ;) (expression_statement "local_28.type_offset = param_2;" (assignment_expression "local_28.type_offset = param_2" (field_expression "local_28.type_offset" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.type_signature = type_offset;" (assignment_expression "local_28.type_signature = type_offset" (field_expression "local_28.type_signature" identifier . field_identifier) = identifier) ;) (expression_statement "visit_top_die(this,signature._0_4_);" (call_expression "visit_top_die(this,signature._0_4_)" identifier (argument_list "(this,signature._0_4_)" ( identifier , (field_expression "signature._0_4_" identifier . field_identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}\n\n" (function_definition "void FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}" primitive_type (function_declarator "FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)" identifier (parameter_list "(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)" ( (parameter_declaration "Gdb_index_info_reader *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "Dwarf_die *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (expression_statement "iVar3 = *(int *)(param_1 + 0x4d8);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x4d8)" identifier = (pointer_expression "*(int *)(param_1 + 0x4d8)" * (cast_expression "(int *)(param_1 + 0x4d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4d8)" ( (binary_expression "param_1 + 0x4d8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;" (assignment_expression "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" * (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" * (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal)) ;) (expression_statement "puVar2 = *(undefined4 **)(iVar3 + 0x84);" (assignment_expression "puVar2 = *(undefined4 **)(iVar3 + 0x84)" identifier = (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "local_1c = param_8;" (assignment_expression "local_1c = param_8" identifier = identifier) ;) (expression_statement "local_20 = param_7;" (assignment_expression "local_20 = param_7" identifier = identifier) ;) (expression_statement "local_14 = param_10;" (assignment_expression "local_14 = param_10" identifier = identifier) ;) (expression_statement "local_18 = param_9;" (assignment_expression "local_18 = param_9" identifier = identifier) ;) (expression_statement "local_28 = param_3;" (assignment_expression "local_28 = param_3" identifier = identifier) ;) (expression_statement "local_24 = param_4;" (assignment_expression "local_24 = param_4" identifier = identifier) ;) (if_statement "if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" if (parenthesized_expression "(puVar2 == *(undefined4 **)(iVar3 + 0x88))" ( (binary_expression "puVar2 == *(undefined4 **)(iVar3 + 0x88)" identifier == (pointer_expression "*(undefined4 **)(iVar3 + 0x88)" * (cast_expression "(undefined4 **)(iVar3 + 0x88)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x88)" ( (binary_expression "iVar3 + 0x88" identifier + number_literal) ))))) )) (compound_statement "{\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }" { (labeled_statement "std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier (ERROR "::vector<gold:" : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" 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_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier (ERROR "::Type_unit>>::\n    _M_realloc_insert<gold:" : : identifier >> : : (binary_expression "_M_realloc_insert<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier (ERROR "::Type_unit>\n              ((vector<gold:" : : identifier > ( ( (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" 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               (iVar3 + 0x80),puVar2,&local_28);" statement_identifier : (ERROR ":" :) (expression_statement "Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (comma_expression "Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28" (binary_expression "Type_unit>> *)\n               (iVar3 + 0x80)" identifier >> (pointer_expression "*)\n               (iVar3 + 0x80)" * (ERROR ")" )) (parenthesized_expression "(iVar3 + 0x80)" ( (binary_expression "iVar3 + 0x80" identifier + number_literal) )))) , (comma_expression "puVar2,&local_28" identifier , (pointer_expression "&local_28" & identifier))) (ERROR ")" )) ;))))))) (expression_statement "puVar1 = *(undefined4 **)(iVar3 + 0x84);" (assignment_expression "puVar1 = *(undefined4 **)(iVar3 + 0x84)" identifier = (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" else (compound_statement "{\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" { (expression_statement "puVar1 = puVar2 + 6;" (assignment_expression "puVar1 = puVar2 + 6" identifier = (binary_expression "puVar2 + 6" identifier + number_literal)) ;) (expression_statement "puVar2[1] = param_4;" (assignment_expression "puVar2[1] = param_4" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[2] = param_7;" (assignment_expression "puVar2[2] = param_7" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar2 = param_3;" (assignment_expression "*puVar2 = param_3" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar2[3] = param_8;" (assignment_expression "puVar2[3] = param_8" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[4] = param_9;" (assignment_expression "puVar2[4] = param_9" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[5] = param_10;" (assignment_expression "puVar2[5] = param_10" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 **)(iVar3 + 0x84) = puVar1;" (assignment_expression "*(undefined4 **)(iVar3 + 0x84) = puVar1" (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" * (cast_expression "(undefined4 **)(iVar3 + 0x84)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x84)" ( (binary_expression "iVar3 + 0x84" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;" (assignment_expression "*(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555" (pointer_expression "*(int *)(param_1 + 0x4dc)" * (cast_expression "(int *)(param_1 + 0x4dc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4dc)" ( (binary_expression "param_1 + 0x4dc" identifier + number_literal) )))) = (binary_expression "((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555" (parenthesized_expression "((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3)" ( (binary_expression "(int)puVar1 - *(int *)(iVar3 + 0x80) >> 3" (binary_expression "(int)puVar1 - *(int *)(iVar3 + 0x80)" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(iVar3 + 0x80)" * (cast_expression "(int *)(iVar3 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x80)" ( (binary_expression "iVar3 + 0x80" identifier + number_literal) ))))) >> number_literal) )) * number_literal)) ;) (labeled_statement "gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);" statement_identifier : (ERROR ":" :) (labeled_statement "Gdb_index_info_reader::visit_top_die(param_1,param_11);" statement_identifier : (ERROR ":" :) (expression_statement "visit_top_die(param_1,param_11);" (call_expression "visit_top_die(param_1,param_11)" identifier (argument_list "(param_1,param_11)" ( identifier , identifier ))) ;))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier (ERROR : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : IDENT >> : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : IDENT > ( ( (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) :) : (labeled_statement statement_identifier : (ERROR :) (expression_statement (comma_expression (binary_expression IDENT >> (pointer_expression * (ERROR )) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (comma_expression IDENT , (pointer_expression & IDENT))) (ERROR )) ;))))))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) )) * LIT)) ;) (labeled_statement statement_identifier : (ERROR :) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;))) (return_statement return ;) })))
(function_definition "void FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0017c2f4(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)" (identifier "FUN_0017c2f4") (parameter_list "(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,\n                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,\n                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)" (( "(") (parameter_declaration "Gdb_index_info_reader *param_1" (type_identifier "Gdb_index_info_reader") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "undefined4 param_10" (type_identifier "undefined4") (identifier "param_10")) (, ",") (parameter_declaration "Dwarf_die *param_11" (type_identifier "Dwarf_die") (pointer_declarator "*param_11" (* "*") (identifier "param_11"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  \n  iVar3 = *(int *)(param_1 + 0x4d8);\n  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;\n  puVar2 = *(undefined4 **)(iVar3 + 0x84);\n  local_1c = param_8;\n  local_20 = param_7;\n  local_14 = param_10;\n  local_18 = param_9;\n  local_28 = param_3;\n  local_24 = param_4;\n  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }\n  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;\n  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 local_1c;" (type_identifier "undefined4") (identifier "local_1c") (; ";")) (declaration "undefined4 local_18;" (type_identifier "undefined4") (identifier "local_18") (; ";")) (declaration "undefined4 local_14;" (type_identifier "undefined4") (identifier "local_14") (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 0x4d8);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x4d8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x4d8)" (* "*") (cast_expression "(int *)(param_1 + 0x4d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4d8)" (( "(") (binary_expression "param_1 + 0x4d8" (identifier "param_1") (+ "+") (number_literal "0x4d8")) () ")"))))) (; ";")) (expression_statement "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;" (assignment_expression "*(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" (* "*") (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dwarf_tu_count_004c378c"))) (= "=") (binary_expression "*(int *)PTR_dwarf_tu_count_004c378c + 1" (pointer_expression "*(int *)PTR_dwarf_tu_count_004c378c" (* "*") (cast_expression "(int *)PTR_dwarf_tu_count_004c378c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dwarf_tu_count_004c378c"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar2 = *(undefined4 **)(iVar3 + 0x84);" (assignment_expression "puVar2 = *(undefined4 **)(iVar3 + 0x84)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" (* "*") (cast_expression "(undefined4 **)(iVar3 + 0x84)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x84)" (( "(") (binary_expression "iVar3 + 0x84" (identifier "iVar3") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "local_1c = param_8;" (assignment_expression "local_1c = param_8" (identifier "local_1c") (= "=") (identifier "param_8")) (; ";")) (expression_statement "local_20 = param_7;" (assignment_expression "local_20 = param_7" (identifier "local_20") (= "=") (identifier "param_7")) (; ";")) (expression_statement "local_14 = param_10;" (assignment_expression "local_14 = param_10" (identifier "local_14") (= "=") (identifier "param_10")) (; ";")) (expression_statement "local_18 = param_9;" (assignment_expression "local_18 = param_9" (identifier "local_18") (= "=") (identifier "param_9")) (; ";")) (expression_statement "local_28 = param_3;" (assignment_expression "local_28 = param_3" (identifier "local_28") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_24 = param_4;" (assignment_expression "local_24 = param_4" (identifier "local_24") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }\n  else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" (if "if") (parenthesized_expression "(puVar2 == *(undefined4 **)(iVar3 + 0x88))" (( "(") (binary_expression "puVar2 == *(undefined4 **)(iVar3 + 0x88)" (identifier "puVar2") (== "==") (pointer_expression "*(undefined4 **)(iVar3 + 0x88)" (* "*") (cast_expression "(undefined4 **)(iVar3 + 0x88)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x88)" (( "(") (binary_expression "iVar3 + 0x88" (identifier "iVar3") (+ "+") (number_literal "0x88")) () ")"))))) () ")")) (compound_statement "{\n    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);\n    puVar1 = *(undefined4 **)(iVar3 + 0x84);\n  }" ({ "{") (labeled_statement "std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (statement_identifier "std") (ERROR "::vector<gold:" (: ":") (: ":") (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (statement_identifier "Gdb_index") (ERROR "::Type_unit,std::allocator<gold:" (: ":") (: ":") (comma_expression "Type_unit,std" (identifier "Type_unit") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Gdb_index::Type_unit>>::\n    _M_realloc_insert<gold::Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (statement_identifier "Gdb_index") (ERROR "::Type_unit>>::\n    _M_realloc_insert<gold:" (: ":") (: ":") (identifier "Type_unit") (>> ">>") (: ":") (: ":") (binary_expression "_M_realloc_insert<gold" (identifier "_M_realloc_insert") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Gdb_index::Type_unit>\n              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (statement_identifier "Gdb_index") (ERROR "::Type_unit>\n              ((vector<gold:" (: ":") (: ":") (identifier "Type_unit") (> ">") (( "(") (( "(") (binary_expression "vector<gold" (identifier "vector") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (statement_identifier "Gdb_index") (ERROR "::Type_unit,std::allocator<gold:" (: ":") (: ":") (comma_expression "Type_unit,std" (identifier "Type_unit") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":")) (: ":") (labeled_statement "Gdb_index::Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (statement_identifier "Gdb_index") (: ":") (ERROR ":" (: ":")) (expression_statement "Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28);" (comma_expression "Type_unit>> *)\n               (iVar3 + 0x80),puVar2,&local_28" (binary_expression "Type_unit>> *)\n               (iVar3 + 0x80)" (identifier "Type_unit") (>> ">>") (pointer_expression "*)\n               (iVar3 + 0x80)" (* "*") (ERROR ")" () ")")) (parenthesized_expression "(iVar3 + 0x80)" (( "(") (binary_expression "iVar3 + 0x80" (identifier "iVar3") (+ "+") (number_literal "0x80")) () ")")))) (, ",") (comma_expression "puVar2,&local_28" (identifier "puVar2") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")))) (ERROR ")" () ")")) (; ";")))))))) (expression_statement "puVar1 = *(undefined4 **)(iVar3 + 0x84);" (assignment_expression "puVar1 = *(undefined4 **)(iVar3 + 0x84)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" (* "*") (cast_expression "(undefined4 **)(iVar3 + 0x84)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x84)" (( "(") (binary_expression "iVar3 + 0x84" (identifier "iVar3") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" (else "else") (compound_statement "{\n    puVar1 = puVar2 + 6;\n    puVar2[1] = param_4;\n    puVar2[2] = param_7;\n    *puVar2 = param_3;\n    puVar2[3] = param_8;\n    puVar2[4] = param_9;\n    puVar2[5] = param_10;\n    *(undefined4 **)(iVar3 + 0x84) = puVar1;\n  }" ({ "{") (expression_statement "puVar1 = puVar2 + 6;" (assignment_expression "puVar1 = puVar2 + 6" (identifier "puVar1") (= "=") (binary_expression "puVar2 + 6" (identifier "puVar2") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "puVar2[1] = param_4;" (assignment_expression "puVar2[1] = param_4" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar2[2] = param_7;" (assignment_expression "puVar2[2] = param_7" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_7")) (; ";")) (expression_statement "*puVar2 = param_3;" (assignment_expression "*puVar2 = param_3" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar2[3] = param_8;" (assignment_expression "puVar2[3] = param_8" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_8")) (; ";")) (expression_statement "puVar2[4] = param_9;" (assignment_expression "puVar2[4] = param_9" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_9")) (; ";")) (expression_statement "puVar2[5] = param_10;" (assignment_expression "puVar2[5] = param_10" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_10")) (; ";")) (expression_statement "*(undefined4 **)(iVar3 + 0x84) = puVar1;" (assignment_expression "*(undefined4 **)(iVar3 + 0x84) = puVar1" (pointer_expression "*(undefined4 **)(iVar3 + 0x84)" (* "*") (cast_expression "(undefined4 **)(iVar3 + 0x84)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x84)" (( "(") (binary_expression "iVar3 + 0x84" (identifier "iVar3") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (identifier "puVar1")) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;" (assignment_expression "*(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555" (pointer_expression "*(int *)(param_1 + 0x4dc)" (* "*") (cast_expression "(int *)(param_1 + 0x4dc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4dc)" (( "(") (binary_expression "param_1 + 0x4dc" (identifier "param_1") (+ "+") (number_literal "0x4dc")) () ")")))) (= "=") (binary_expression "((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555" (parenthesized_expression "((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3)" (( "(") (binary_expression "(int)puVar1 - *(int *)(iVar3 + 0x80) >> 3" (binary_expression "(int)puVar1 - *(int *)(iVar3 + 0x80)" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (- "-") (pointer_expression "*(int *)(iVar3 + 0x80)" (* "*") (cast_expression "(int *)(iVar3 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x80)" (( "(") (binary_expression "iVar3 + 0x80" (identifier "iVar3") (+ "+") (number_literal "0x80")) () ")"))))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "0x55555555"))) (; ";")) (labeled_statement "gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);" (statement_identifier "gold") (: ":") (ERROR ":" (: ":")) (labeled_statement "Gdb_index_info_reader::visit_top_die(param_1,param_11);" (statement_identifier "Gdb_index_info_reader") (: ":") (ERROR ":" (: ":")) (expression_statement "visit_top_die(param_1,param_11);" (call_expression "visit_top_die(param_1,param_11)" (identifier "visit_top_die") (argument_list "(param_1,param_11)" (( "(") (identifier "param_1") (, ",") (identifier "param_11") () ")"))) (; ";")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: void visit_type_unit(Gdb_index_info_reader * this, off_t tu_offset,
   off_t param_2, off_t type_offset, uint64_t signature, Dwarf_die * root_die) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 tu_offset,type_2 param_2,type_2 type_offset,
          uint64_t signature,type_3 *root_die)

{
  type_4 pTVar1;
  type_5 __position;
  type_6 in_a2;
  type_6 in_a3;
  type_7 *pGVar2;
  type_8 local_28;
  
  pGVar2 = this->gdb_index_;
  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;
  __position._M_current =
       (pGVar2->type_units_).
       super__Vector_base<gold::type_7::type_8,_std::allocator<gold::Gdb_index::type_8>var_1>.
       _M_impl._M_finish;
  if (__position._M_current ==
      (pGVar2->type_units_).
      super__Vector_base<gold::type_7::type_8,_std::allocator<gold::type_7::type_8>var_1>.
      _M_impl._M_end_of_storage) {
    local_28.type_offset = param_2;
    local_28.type_signature = type_offset;
    std::vector<gold::Gdb_index::type_8,_std::allocator<gold::Gdb_index::type_8>var_1>::
    _M_realloc_insert<gold::Gdb_index::type_8>(&pGVar2->type_units_,__position,&local_28);
    pTVar1 = (pGVar2->type_units_).
             super__Vector_base<gold::Gdb_index::type_8,_std::allocator<gold::Gdb_index::type_8>var_1>
             ._M_impl._M_finish;
    param_2 = local_28.type_offset;
    type_offset = local_28.type_signature;
  }
  else {
    pTVar1 = __position._M_current + 1;
    *(type_6 *)((int)&(__position._M_current)->tu_offset + 4) = in_a3;
    *(type_6 *)&(__position._M_current)->type_offset = param_2._0_4_;
    *(type_6 *)&(__position._M_current)->tu_offset = in_a2;
    *(type_6 *)((int)&(__position._M_current)->type_offset + 4) = param_2._4_4_;
    (__position._M_current)->type_signature = type_offset;
    (pGVar2->type_units_).
    super__Vector_base<gold::Gdb_index::type_8,_std::allocator<gold::Gdb_index::type_8>var_1>.
    _M_impl._M_finish = pTVar1;
  }
  this->cu_index_ =
       ((int)pTVar1 -
        (int)(pGVar2->type_units_).
             super__Vector_base<gold::type_7::type_8,_std::allocator<gold::type_7::type_8>var_1>
             ._M_impl._M_start >> 3) * 0x55555555;
  local_28.type_offset = param_2;
  local_28.type_signature = type_offset;
  var_2(this,signature._0_4_);
  return;
}


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

void MASKED(Gdb_index_info_reader *param_1,undefined4 param_2,undefined4 param_3,
                 undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
                 undefined4 param_8,undefined4 param_9,undefined4 param_10,Dwarf_die *param_11)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  
  iVar3 = *(int *)(param_1 + 0x4d8);
  *(int *)PTR_dwarf_tu_count_004c378c = *(int *)PTR_dwarf_tu_count_004c378c + 1;
  puVar2 = *(undefined4 **)(iVar3 + 0x84);
  local_1c = param_8;
  local_20 = param_7;
  local_14 = param_10;
  local_18 = param_9;
  local_28 = param_3;
  local_24 = param_4;
  if (puVar2 == *(undefined4 **)(iVar3 + 0x88)) {
    std::vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>>::
    _M_realloc_insert<gold::Gdb_index::Type_unit>
              ((vector<gold::Gdb_index::Type_unit,std::allocator<gold::Gdb_index::Type_unit>> *)
               (iVar3 + 0x80),puVar2,&local_28);
    puVar1 = *(undefined4 **)(iVar3 + 0x84);
  }
  else {
    puVar1 = puVar2 + 6;
    puVar2[1] = param_4;
    puVar2[2] = param_7;
    *puVar2 = param_3;
    puVar2[3] = param_8;
    puVar2[4] = param_9;
    puVar2[5] = param_10;
    *(undefined4 **)(iVar3 + 0x84) = puVar1;
  }
  *(int *)(param_1 + 0x4dc) = ((int)puVar1 - *(int *)(iVar3 + 0x80) >> 3) * 0x55555555;
  gold::Gdb_index_info_reader::visit_top_die(param_1,param_11);
  return;
}

