
/* DWARF original prototype: void visit_compilation_unit(Gdb_index_info_reader * this, off_t
   cu_offset, off_t cu_length, Dwarf_die * root_die) */

void __thiscall
gold::Gdb_index_info_reader::visit_compilation_unit
          (Gdb_index_info_reader *this,off_t cu_offset,off_t cu_length,Dwarf_die *root_die)

{
  Gdb_index *pGVar1;
  iterator __position;
  Comp_unit *pCVar2;
  Comp_unit local_28;
  
  pGVar1 = this->gdb_index_;
  dwarf_cu_count = dwarf_cu_count + 1;
  __position._M_current =
       (pGVar1->comp_units_).
       super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.
       _M_impl._M_finish;
  local_28.cu_offset = cu_offset;
  local_28.cu_length = cu_length;
  if (__position._M_current ==
      (pGVar1->comp_units_).
      super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.
      _M_impl._M_end_of_storage) {
    std::vector<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::
    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);
    pCVar2 = (pGVar1->comp_units_).
             super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>
             ._M_impl._M_finish;
  }
  else {
    (__position._M_current)->cu_offset = cu_offset;
    pCVar2 = __position._M_current + 1;
    (__position._M_current)->cu_length = cu_length;
    (pGVar1->comp_units_).
    super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.
    _M_impl._M_finish = pCVar2;
  }
  this->cu_index_ =
       (int)((long)pCVar2 -
             (long)(pGVar1->comp_units_).
                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>
                   ._M_impl._M_start >> 4) + -1;
  visit_top_die(this,root_die);
  return;
}



void FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)

{
  long lVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 local_28;
  undefined8 local_20;
  
  lVar1 = *(long *)(param_1 + 0x940);
  DAT_00449264 = DAT_00449264 + 1;
  puVar2 = *(undefined8 **)(lVar1 + 200);
  local_28 = param_2;
  local_20 = param_3;
  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {
    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);
    puVar3 = *(undefined8 **)(lVar1 + 200);
  }
  else {
    *puVar2 = param_2;
    puVar3 = puVar2 + 2;
    puVar2[1] = param_3;
    *(undefined8 **)(lVar1 + 200) = puVar3;
  }
  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;
  FUN_002b8460(param_1,param_4);
  return;
}


PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x28
MOV RBX,qword ptr [RDI + 0x940]
ADD dword ptr [0x00449264],0x1
MOV qword ptr [RSP + 0x10],RSI
MOV qword ptr [RSP + 0x18],RDX
MOV RAX,qword ptr [RBX + 0xc8]
CMP RAX,qword ptr [RBX + 0xd0]
JZ 0x002b85e0
MOV qword ptr [RAX],RSI
ADD RAX,0x10
MOV qword ptr [RAX + -0x8],RDX
MOV qword ptr [RBX + 0xc8],RAX
SUB RAX,qword ptr [RBX + 0xc0]
MOV RDI,RBP
MOV RSI,RCX
SAR RAX,0x4
SUB EAX,0x1
MOV dword ptr [RBP + 0x948],EAX
CALL 0x002b8460
ADD RSP,0x28
POP RBX
POP RBP
RET
MOV RSI,RAX
LEA RDX,[RSP + 0x10]
MOV qword ptr [RSP + 0x8],RCX
LEA RDI,[RBX + 0xc0]
CALL 0x002b90d0
MOV RAX,qword ptr [RBX + 0xc8]
MOV RCX,qword ptr [RSP + 0x8]
JMP 0x002b85b3
(translation_unit "void FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}\n\n" (function_definition "void FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}" primitive_type (function_declarator "FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 local_28;" type_identifier identifier ;) (declaration "undefined8 local_20;" type_identifier identifier ;) (expression_statement "lVar1 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x940)" identifier = (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "DAT_00449264 = DAT_00449264 + 1;" (assignment_expression "DAT_00449264 = DAT_00449264 + 1" identifier = (binary_expression "DAT_00449264 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar1 + 200);" (assignment_expression "puVar2 = *(undefined8 **)(lVar1 + 200)" identifier = (pointer_expression "*(undefined8 **)(lVar1 + 200)" * (cast_expression "(undefined8 **)(lVar1 + 200)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 200)" ( (binary_expression "lVar1 + 200" identifier + number_literal) ))))) ;) (expression_statement "local_28 = param_2;" (assignment_expression "local_28 = param_2" identifier = identifier) ;) (expression_statement "local_20 = param_3;" (assignment_expression "local_20 = param_3" identifier = identifier) ;) (if_statement "if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" if (parenthesized_expression "(puVar2 == *(undefined8 **)(lVar1 + 0xd0))" ( (binary_expression "puVar2 == *(undefined8 **)(lVar1 + 0xd0)" identifier == (pointer_expression "*(undefined8 **)(lVar1 + 0xd0)" * (cast_expression "(undefined8 **)(lVar1 + 0xd0)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0xd0)" ( (binary_expression "lVar1 + 0xd0" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }" { (expression_statement "FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);" (call_expression "FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28)" identifier (argument_list "(lVar1 + 0xc0,puVar2,&local_28)" ( (binary_expression "lVar1 + 0xc0" identifier + number_literal) , identifier , (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "puVar3 = *(undefined8 **)(lVar1 + 200);" (assignment_expression "puVar3 = *(undefined8 **)(lVar1 + 200)" identifier = (pointer_expression "*(undefined8 **)(lVar1 + 200)" * (cast_expression "(undefined8 **)(lVar1 + 200)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 200)" ( (binary_expression "lVar1 + 200" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" else (compound_statement "{\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" { (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar2 + 2;" (assignment_expression "puVar3 = puVar2 + 2" identifier = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) (expression_statement "puVar2[1] = param_3;" (assignment_expression "puVar2[1] = param_3" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 **)(lVar1 + 200) = puVar3;" (assignment_expression "*(undefined8 **)(lVar1 + 200) = puVar3" (pointer_expression "*(undefined8 **)(lVar1 + 200)" * (cast_expression "(undefined8 **)(lVar1 + 200)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 200)" ( (binary_expression "lVar1 + 200" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;" (assignment_expression "*(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1" (pointer_expression "*(int *)(param_1 + 0x948)" * (cast_expression "(int *)(param_1 + 0x948)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x948)" ( (binary_expression "param_1 + 0x948" identifier + number_literal) )))) = (binary_expression "(int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1" (cast_expression "(int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4)" ( (binary_expression "(long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4" (binary_expression "(long)puVar3 - *(long *)(lVar1 + 0xc0)" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (pointer_expression "*(long *)(lVar1 + 0xc0)" * (cast_expression "(long *)(lVar1 + 0xc0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xc0)" ( (binary_expression "lVar1 + 0xc0" identifier + number_literal) ))))) >> number_literal) ))) + number_literal)) ;) (expression_statement "FUN_002b8460(param_1,param_4);" (call_expression "FUN_002b8460(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void visit_compilation_unit(Gdb_index_info_reader * this, off_t\n   cu_offset, off_t cu_length, Dwarf_die * root_die) */\n\nvoid __thiscall\ngold::Gdb_index_info_reader::visit_compilation_unit\n          (Gdb_index_info_reader *this,off_t cu_offset,off_t cu_length,Dwarf_die *root_die)\n\n{\n  Gdb_index *pGVar1;\n  iterator __position;\n  Comp_unit *pCVar2;\n  Comp_unit local_28;\n  \n  pGVar1 = this->gdb_index_;\n  dwarf_cu_count = dwarf_cu_count + 1;\n  __position._M_current =\n       (pGVar1->comp_units_).\n       super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n       _M_impl._M_finish;\n  local_28.cu_offset = cu_offset;\n  local_28.cu_length = cu_length;\n  if (__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n      _M_impl._M_end_of_storage) {\n    std::vector<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);\n    pCVar2 = (pGVar1->comp_units_).\n             super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n             ._M_impl._M_finish;\n  }\n  else {\n    (__position._M_current)->cu_offset = cu_offset;\n    pCVar2 = __position._M_current + 1;\n    (__position._M_current)->cu_length = cu_length;\n    (pGVar1->comp_units_).\n    super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;\n  }\n  this->cu_index_ =\n       (int)((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4) + -1;\n  visit_top_die(this,root_die);\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Gdb_index_info_reader::visit_compilation_unit\n          (Gdb_index_info_reader *this,off_t cu_offset,off_t cu_length,Dwarf_die *root_die)\n\n{\n  Gdb_index *pGVar1;\n  iterator __position;\n  Comp_unit *pCVar2;\n  Comp_unit local_28;\n  \n  pGVar1 = this->gdb_index_;\n  dwarf_cu_count = dwarf_cu_count + 1;\n  __position._M_current =\n       (pGVar1->comp_units_).\n       super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n       _M_impl._M_finish;\n  local_28.cu_offset = cu_offset;\n  local_28.cu_length = cu_length;\n  if (__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n      _M_impl._M_end_of_storage) {\n    std::vector<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);\n    pCVar2 = (pGVar1->comp_units_).\n             super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n             ._M_impl._M_finish;\n  }\n  else {\n    (__position._M_current)->cu_offset = cu_offset;\n    pCVar2 = __position._M_current + 1;\n    (__position._M_current)->cu_length = cu_length;\n    (pGVar1->comp_units_).\n    super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;\n  }\n  this->cu_index_ =\n       (int)((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4) + -1;\n  visit_top_die(this,root_die);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "visit_compilation_unit\n          (Gdb_index_info_reader *this,off_t cu_offset,off_t cu_length,Dwarf_die *root_die)" identifier (parameter_list "(Gdb_index_info_reader *this,off_t cu_offset,off_t cu_length,Dwarf_die *root_die)" ( (parameter_declaration "Gdb_index_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "off_t cu_offset" type_identifier identifier) , (parameter_declaration "off_t cu_length" type_identifier identifier) , (parameter_declaration "Dwarf_die *root_die" type_identifier (pointer_declarator "*root_die" * identifier)) ))) (compound_statement "{\n  Gdb_index *pGVar1;\n  iterator __position;\n  Comp_unit *pCVar2;\n  Comp_unit local_28;\n  \n  pGVar1 = this->gdb_index_;\n  dwarf_cu_count = dwarf_cu_count + 1;\n  __position._M_current =\n       (pGVar1->comp_units_).\n       super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n       _M_impl._M_finish;\n  local_28.cu_offset = cu_offset;\n  local_28.cu_length = cu_length;\n  if (__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n      _M_impl._M_end_of_storage) {\n    std::vector<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);\n    pCVar2 = (pGVar1->comp_units_).\n             super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n             ._M_impl._M_finish;\n  }\n  else {\n    (__position._M_current)->cu_offset = cu_offset;\n    pCVar2 = __position._M_current + 1;\n    (__position._M_current)->cu_length = cu_length;\n    (pGVar1->comp_units_).\n    super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;\n  }\n  this->cu_index_ =\n       (int)((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4) + -1;\n  visit_top_die(this,root_die);\n  return;\n}" { (declaration "Gdb_index *pGVar1;" type_identifier (pointer_declarator "*pGVar1" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "Comp_unit *pCVar2;" type_identifier (pointer_declarator "*pCVar2" * identifier) ;) (declaration "Comp_unit local_28;" type_identifier identifier ;) (expression_statement "pGVar1 = this->gdb_index_;" (assignment_expression "pGVar1 = this->gdb_index_" identifier = (field_expression "this->gdb_index_" identifier -> field_identifier)) ;) (expression_statement "dwarf_cu_count = dwarf_cu_count + 1;" (assignment_expression "dwarf_cu_count = dwarf_cu_count + 1" identifier = (binary_expression "dwarf_cu_count + 1" identifier + number_literal)) ;) (ERROR "__position._M_current =\n       (pGVar1->comp_units_).\n       super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::" (comma_expression "__position._M_current =\n       (pGVar1->comp_units_).\n       super__Vector_base<gold::Gdb_index::Comp_unit,_std" (assignment_expression "__position._M_current =\n       (pGVar1->comp_units_).\n       super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(pGVar1->comp_units_).\n       super__Vector_base<gold" (field_expression "(pGVar1->comp_units_).\n       super__Vector_base" (parenthesized_expression "(pGVar1->comp_units_)" ( (field_expression "pGVar1->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Gdb_index::Comp_unit" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (labeled_statement "Gdb_index::Comp_unit>_>.\n       _M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>_>.\n       _M_impl._M_finish;" (field_expression "Comp_unit>_>.\n       _M_impl._M_finish" (field_expression "Comp_unit>_>.\n       _M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;)) (expression_statement "local_28.cu_offset = cu_offset;" (assignment_expression "local_28.cu_offset = cu_offset" (field_expression "local_28.cu_offset" identifier . field_identifier) = identifier) ;) (expression_statement "local_28.cu_length = cu_length;" (assignment_expression "local_28.cu_length = cu_length" (field_expression "local_28.cu_length" identifier . field_identifier) = identifier) ;) (if_statement "if (__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n      _M_impl._M_end_of_storage) {\n    std::vector<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);\n    pCVar2 = (pGVar1->comp_units_).\n             super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n             ._M_impl._M_finish;\n  }\n  else {\n    (__position._M_current)->cu_offset = cu_offset;\n    pCVar2 = __position._M_current + 1;\n    (__position._M_current)->cu_length = cu_length;\n    (pGVar1->comp_units_).\n    super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;\n  }" if (parenthesized_expression "(__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n      _M_impl._M_end_of_storage)" ( (ERROR "__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::" (comma_expression "__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold::Gdb_index::Comp_unit,_std" (binary_expression "__position._M_current ==\n      (pGVar1->comp_units_).\n      super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(pGVar1->comp_units_).\n      super__Vector_base<gold" (field_expression "(pGVar1->comp_units_).\n      super__Vector_base" (parenthesized_expression "(pGVar1->comp_units_)" ( (field_expression "pGVar1->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Gdb_index::Comp_unit" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (field_expression "Comp_unit>_>.\n      _M_impl._M_end_of_storage" (field_expression "Comp_unit>_>.\n      _M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    std::vector<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);\n    pCVar2 = (pGVar1->comp_units_).\n             super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n             ._M_impl._M_finish;\n  }" { (labeled_statement "std::vector<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);" statement_identifier (ERROR "::vector<gold:" : : (binary_expression "vector<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);" statement_identifier (ERROR "::Comp_unit,_std::allocator<gold:" : : (comma_expression "Comp_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>_>::\n    _M_realloc_insert<gold::Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);" statement_identifier (ERROR "::Comp_unit>_>::\n    _M_realloc_insert<gold:" : : (binary_expression "Comp_unit>_" identifier > identifier) > : : (binary_expression "_M_realloc_insert<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>(&pGVar1->comp_units_,__position,&local_28);" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>(&pGVar1->comp_units_,__position,&local_28);" (binary_expression "Comp_unit>(&pGVar1->comp_units_,__position,&local_28)" identifier > (parenthesized_expression "(&pGVar1->comp_units_,__position,&local_28)" ( (comma_expression "&pGVar1->comp_units_,__position,&local_28" (pointer_expression "&pGVar1->comp_units_" & (field_expression "pGVar1->comp_units_" identifier -> field_identifier)) , (comma_expression "__position,&local_28" identifier , (pointer_expression "&local_28" & identifier))) ))) ;))))) (ERROR "pCVar2 = (pGVar1->comp_units_).\n             super__Vector_base<gold::" (assignment_expression "pCVar2 = (pGVar1->comp_units_).\n             super__Vector_base<gold" identifier = (binary_expression "(pGVar1->comp_units_).\n             super__Vector_base<gold" (field_expression "(pGVar1->comp_units_).\n             super__Vector_base" (parenthesized_expression "(pGVar1->comp_units_)" ( (field_expression "pGVar1->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n             ._M_impl._M_finish;" statement_identifier (ERROR "::Comp_unit,_std::allocator<gold:" : : (comma_expression "Comp_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>_>\n             ._M_impl._M_finish;" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>_>\n             ._M_impl._M_finish;" (field_expression "Comp_unit>_>\n             ._M_impl._M_finish" (field_expression "Comp_unit>_>\n             ._M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;))) }) (else_clause "else {\n    (__position._M_current)->cu_offset = cu_offset;\n    pCVar2 = __position._M_current + 1;\n    (__position._M_current)->cu_length = cu_length;\n    (pGVar1->comp_units_).\n    super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;\n  }" else (compound_statement "{\n    (__position._M_current)->cu_offset = cu_offset;\n    pCVar2 = __position._M_current + 1;\n    (__position._M_current)->cu_length = cu_length;\n    (pGVar1->comp_units_).\n    super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;\n  }" { (expression_statement "(__position._M_current)->cu_offset = cu_offset;" (assignment_expression "(__position._M_current)->cu_offset = cu_offset" (field_expression "(__position._M_current)->cu_offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = identifier) ;) (expression_statement "pCVar2 = __position._M_current + 1;" (assignment_expression "pCVar2 = __position._M_current + 1" identifier = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (expression_statement "(__position._M_current)->cu_length = cu_length;" (assignment_expression "(__position._M_current)->cu_length = cu_length" (field_expression "(__position._M_current)->cu_length" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = identifier) ;) (ERROR "(pGVar1->comp_units_).\n    super__Vector_base<gold::" (binary_expression "(pGVar1->comp_units_).\n    super__Vector_base<gold" (field_expression "(pGVar1->comp_units_).\n    super__Vector_base" (parenthesized_expression "(pGVar1->comp_units_)" ( (field_expression "pGVar1->comp_units_" identifier -> field_identifier) )) . field_identifier) < identifier) : :) (labeled_statement "Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;" statement_identifier (ERROR "::Comp_unit,_std::allocator<gold:" : : (comma_expression "Comp_unit,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Gdb_index::Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;" statement_identifier : (ERROR ":" :) (expression_statement "Comp_unit>_>.\n    _M_impl._M_finish = pCVar2;" (assignment_expression "Comp_unit>_>.\n    _M_impl._M_finish = pCVar2" (field_expression "Comp_unit>_>.\n    _M_impl._M_finish" (field_expression "Comp_unit>_>.\n    _M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;))) }))) (expression_statement "this->cu_index_ =\n       (int)((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4) + -1;" (assignment_expression "this->cu_index_ =\n       (int)((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4) + -1" (field_expression "this->cu_index_" identifier -> field_identifier) = (binary_expression "(int)((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4) + -1" (cast_expression "(int)((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::Comp_unit>_>\n                   ._M_impl._M_start >> 4)" ( (ERROR "(long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std::allocator<gold::Gdb_index::" (comma_expression "(long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold::Gdb_index::Comp_unit,_std" (binary_expression "(long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base<gold" (binary_expression "(long)pCVar2 -\n             (long)(pGVar1->comp_units_).\n                   super__Vector_base" (cast_expression "(long)pCVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)(pGVar1->comp_units_).\n                   super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(pGVar1->comp_units_).\n                   super__Vector_base" (parenthesized_expression "(pGVar1->comp_units_)" ( (field_expression "pGVar1->comp_units_" identifier -> field_identifier) )) . field_identifier))) < identifier) (ERROR "::Gdb_index::Comp_unit" : : identifier : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Comp_unit>_>\n                   ._M_impl._M_start >> 4" (field_expression "Comp_unit>_>\n                   ._M_impl._M_start" (field_expression "Comp_unit>_>\n                   ._M_impl" (binary_expression "Comp_unit>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) >> number_literal) ))) + number_literal)) ;) (expression_statement "visit_top_die(this,root_die);" (call_expression "visit_top_die(this,root_die)" identifier (argument_list "(this,root_die)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}\n\n" (function_definition "void FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}" primitive_type (function_declarator "FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined8 local_28;" type_identifier identifier ;) (declaration "undefined8 local_20;" type_identifier identifier ;) (expression_statement "lVar1 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x940)" identifier = (pointer_expression "*(long *)(param_1 + 0x940)" * (cast_expression "(long *)(param_1 + 0x940)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x940)" ( (binary_expression "param_1 + 0x940" identifier + number_literal) ))))) ;) (expression_statement "DAT_00449264 = DAT_00449264 + 1;" (assignment_expression "DAT_00449264 = DAT_00449264 + 1" identifier = (binary_expression "DAT_00449264 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = *(undefined8 **)(lVar1 + 200);" (assignment_expression "puVar2 = *(undefined8 **)(lVar1 + 200)" identifier = (pointer_expression "*(undefined8 **)(lVar1 + 200)" * (cast_expression "(undefined8 **)(lVar1 + 200)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 200)" ( (binary_expression "lVar1 + 200" identifier + number_literal) ))))) ;) (expression_statement "local_28 = param_2;" (assignment_expression "local_28 = param_2" identifier = identifier) ;) (expression_statement "local_20 = param_3;" (assignment_expression "local_20 = param_3" identifier = identifier) ;) (if_statement "if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" if (parenthesized_expression "(puVar2 == *(undefined8 **)(lVar1 + 0xd0))" ( (binary_expression "puVar2 == *(undefined8 **)(lVar1 + 0xd0)" identifier == (pointer_expression "*(undefined8 **)(lVar1 + 0xd0)" * (cast_expression "(undefined8 **)(lVar1 + 0xd0)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0xd0)" ( (binary_expression "lVar1 + 0xd0" identifier + number_literal) ))))) )) (compound_statement "{\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }" { (expression_statement "FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);" (call_expression "FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28)" identifier (argument_list "(lVar1 + 0xc0,puVar2,&local_28)" ( (binary_expression "lVar1 + 0xc0" identifier + number_literal) , identifier , (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "puVar3 = *(undefined8 **)(lVar1 + 200);" (assignment_expression "puVar3 = *(undefined8 **)(lVar1 + 200)" identifier = (pointer_expression "*(undefined8 **)(lVar1 + 200)" * (cast_expression "(undefined8 **)(lVar1 + 200)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 200)" ( (binary_expression "lVar1 + 200" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" else (compound_statement "{\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" { (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar2 + 2;" (assignment_expression "puVar3 = puVar2 + 2" identifier = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) (expression_statement "puVar2[1] = param_3;" (assignment_expression "puVar2[1] = param_3" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined8 **)(lVar1 + 200) = puVar3;" (assignment_expression "*(undefined8 **)(lVar1 + 200) = puVar3" (pointer_expression "*(undefined8 **)(lVar1 + 200)" * (cast_expression "(undefined8 **)(lVar1 + 200)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 200)" ( (binary_expression "lVar1 + 200" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "*(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;" (assignment_expression "*(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1" (pointer_expression "*(int *)(param_1 + 0x948)" * (cast_expression "(int *)(param_1 + 0x948)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x948)" ( (binary_expression "param_1 + 0x948" identifier + number_literal) )))) = (binary_expression "(int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1" (cast_expression "(int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4)" ( (binary_expression "(long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4" (binary_expression "(long)puVar3 - *(long *)(lVar1 + 0xc0)" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (pointer_expression "*(long *)(lVar1 + 0xc0)" * (cast_expression "(long *)(lVar1 + 0xc0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0xc0)" ( (binary_expression "lVar1 + 0xc0" identifier + number_literal) ))))) >> number_literal) ))) + number_literal)) ;) (expression_statement "FUN_002b8460(param_1,param_4);" (call_expression "FUN_002b8460(param_1,param_4)" identifier (argument_list "(param_1,param_4)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression 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) ;) (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 { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) ))) ;) (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 (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) ))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002b8570(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" (identifier "FUN_002b8570") (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")"))) (compound_statement "{\n  long lVar1;\n  undefined8 *puVar2;\n  undefined8 *puVar3;\n  undefined8 local_28;\n  undefined8 local_20;\n  \n  lVar1 = *(long *)(param_1 + 0x940);\n  DAT_00449264 = DAT_00449264 + 1;\n  puVar2 = *(undefined8 **)(lVar1 + 200);\n  local_28 = param_2;\n  local_20 = param_3;\n  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }\n  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;\n  FUN_002b8460(param_1,param_4);\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined8 local_28;" (type_identifier "undefined8") (identifier "local_28") (; ";")) (declaration "undefined8 local_20;" (type_identifier "undefined8") (identifier "local_20") (; ";")) (expression_statement "lVar1 = *(long *)(param_1 + 0x940);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x940)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(param_1 + 0x940)" (* "*") (cast_expression "(long *)(param_1 + 0x940)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x940)" (( "(") (binary_expression "param_1 + 0x940" (identifier "param_1") (+ "+") (number_literal "0x940")) () ")"))))) (; ";")) (expression_statement "DAT_00449264 = DAT_00449264 + 1;" (assignment_expression "DAT_00449264 = DAT_00449264 + 1" (identifier "DAT_00449264") (= "=") (binary_expression "DAT_00449264 + 1" (identifier "DAT_00449264") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar2 = *(undefined8 **)(lVar1 + 200);" (assignment_expression "puVar2 = *(undefined8 **)(lVar1 + 200)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(lVar1 + 200)" (* "*") (cast_expression "(undefined8 **)(lVar1 + 200)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 200)" (( "(") (binary_expression "lVar1 + 200" (identifier "lVar1") (+ "+") (number_literal "200")) () ")"))))) (; ";")) (expression_statement "local_28 = param_2;" (assignment_expression "local_28 = param_2" (identifier "local_28") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_20 = param_3;" (assignment_expression "local_20 = param_3" (identifier "local_20") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }\n  else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" (if "if") (parenthesized_expression "(puVar2 == *(undefined8 **)(lVar1 + 0xd0))" (( "(") (binary_expression "puVar2 == *(undefined8 **)(lVar1 + 0xd0)" (identifier "puVar2") (== "==") (pointer_expression "*(undefined8 **)(lVar1 + 0xd0)" (* "*") (cast_expression "(undefined8 **)(lVar1 + 0xd0)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0xd0)" (( "(") (binary_expression "lVar1 + 0xd0" (identifier "lVar1") (+ "+") (number_literal "0xd0")) () ")"))))) () ")")) (compound_statement "{\n    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);\n    puVar3 = *(undefined8 **)(lVar1 + 200);\n  }" ({ "{") (expression_statement "FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);" (call_expression "FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28)" (identifier "FUN_002b90d0") (argument_list "(lVar1 + 0xc0,puVar2,&local_28)" (( "(") (binary_expression "lVar1 + 0xc0" (identifier "lVar1") (+ "+") (number_literal "0xc0")) (, ",") (identifier "puVar2") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")"))) (; ";")) (expression_statement "puVar3 = *(undefined8 **)(lVar1 + 200);" (assignment_expression "puVar3 = *(undefined8 **)(lVar1 + 200)" (identifier "puVar3") (= "=") (pointer_expression "*(undefined8 **)(lVar1 + 200)" (* "*") (cast_expression "(undefined8 **)(lVar1 + 200)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 200)" (( "(") (binary_expression "lVar1 + 200" (identifier "lVar1") (+ "+") (number_literal "200")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" (else "else") (compound_statement "{\n    *puVar2 = param_2;\n    puVar3 = puVar2 + 2;\n    puVar2[1] = param_3;\n    *(undefined8 **)(lVar1 + 200) = puVar3;\n  }" ({ "{") (expression_statement "*puVar2 = param_2;" (assignment_expression "*puVar2 = param_2" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar3 = puVar2 + 2;" (assignment_expression "puVar3 = puVar2 + 2" (identifier "puVar3") (= "=") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar2[1] = param_3;" (assignment_expression "puVar2[1] = param_3" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined8 **)(lVar1 + 200) = puVar3;" (assignment_expression "*(undefined8 **)(lVar1 + 200) = puVar3" (pointer_expression "*(undefined8 **)(lVar1 + 200)" (* "*") (cast_expression "(undefined8 **)(lVar1 + 200)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 200)" (( "(") (binary_expression "lVar1 + 200" (identifier "lVar1") (+ "+") (number_literal "200")) () ")")))) (= "=") (identifier "puVar3")) (; ";")) (} "}")))) (expression_statement "*(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;" (assignment_expression "*(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1" (pointer_expression "*(int *)(param_1 + 0x948)" (* "*") (cast_expression "(int *)(param_1 + 0x948)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x948)" (( "(") (binary_expression "param_1 + 0x948" (identifier "param_1") (+ "+") (number_literal "0x948")) () ")")))) (= "=") (binary_expression "(int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1" (cast_expression "(int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4)" (( "(") (binary_expression "(long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4" (binary_expression "(long)puVar3 - *(long *)(lVar1 + 0xc0)" (cast_expression "(long)puVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar3")) (- "-") (pointer_expression "*(long *)(lVar1 + 0xc0)" (* "*") (cast_expression "(long *)(lVar1 + 0xc0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0xc0)" (( "(") (binary_expression "lVar1 + 0xc0" (identifier "lVar1") (+ "+") (number_literal "0xc0")) () ")"))))) (>> ">>") (number_literal "4")) () ")"))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "FUN_002b8460(param_1,param_4);" (call_expression "FUN_002b8460(param_1,param_4)" (identifier "FUN_002b8460") (argument_list "(param_1,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "param_4") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void visit_compilation_unit(Gdb_index_info_reader * this, off_t
   cu_offset, off_t cu_length, Dwarf_die * root_die) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 cu_offset,type_2 cu_length,type_3 *root_die)

{
  type_4 *pGVar1;
  type_5 __position;
  type_6 *pCVar2;
  type_6 local_28;
  
  pGVar1 = this->gdb_index_;
  var_1 = var_1 + 1;
  __position._M_current =
       (pGVar1->comp_units_).
       super__Vector_base<gold::type_4::type_6,_std::allocator<gold::Gdb_index::type_6>var_2>.
       _M_impl._M_finish;
  local_28.cu_offset = cu_offset;
  local_28.cu_length = cu_length;
  if (__position._M_current ==
      (pGVar1->comp_units_).
      super__Vector_base<gold::type_4::type_6,_std::allocator<gold::type_4::type_6>var_2>.
      _M_impl._M_end_of_storage) {
    std::vector<gold::Gdb_index::type_6,_std::allocator<gold::Gdb_index::type_6>var_2>::
    _M_realloc_insert<gold::Gdb_index::type_6>(&pGVar1->comp_units_,__position,&local_28);
    pCVar2 = (pGVar1->comp_units_).
             super__Vector_base<gold::Gdb_index::type_6,_std::allocator<gold::Gdb_index::type_6>var_2>
             ._M_impl._M_finish;
  }
  else {
    (__position._M_current)->cu_offset = cu_offset;
    pCVar2 = __position._M_current + 1;
    (__position._M_current)->cu_length = cu_length;
    (pGVar1->comp_units_).
    super__Vector_base<gold::Gdb_index::type_6,_std::allocator<gold::Gdb_index::type_6>var_2>.
    _M_impl._M_finish = pCVar2;
  }
  this->cu_index_ =
       (int)((long)pCVar2 -
             (long)(pGVar1->comp_units_).
                   super__Vector_base<gold::type_4::type_6,_std::allocator<gold::type_4::type_6>var_2>
                   ._M_impl._M_start >> 4) + -1;
  var_3(this,root_die);
  return;
}


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

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

{
  long lVar1;
  undefined8 *puVar2;
  undefined8 *puVar3;
  undefined8 local_28;
  undefined8 local_20;
  
  lVar1 = *(long *)(param_1 + 0x940);
  DAT_00449264 = DAT_00449264 + 1;
  puVar2 = *(undefined8 **)(lVar1 + 200);
  local_28 = param_2;
  local_20 = param_3;
  if (puVar2 == *(undefined8 **)(lVar1 + 0xd0)) {
    FUN_002b90d0(lVar1 + 0xc0,puVar2,&local_28);
    puVar3 = *(undefined8 **)(lVar1 + 200);
  }
  else {
    *puVar2 = param_2;
    puVar3 = puVar2 + 2;
    puVar2[1] = param_3;
    *(undefined8 **)(lVar1 + 200) = puVar3;
  }
  *(int *)(param_1 + 0x948) = (int)((long)puVar3 - *(long *)(lVar1 + 0xc0) >> 4) + -1;
  FUN_002b8460(param_1,param_4);
  return;
}

