
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void get_allocated_sections(Layout * this, Section_list * section_list)
    */

void __thiscall gold::Layout::get_allocated_sections(Layout *this,Section_list *section_list)

{
  iterator __position;
  Output_section **__args_0;
  
  __args_0 = (this->section_list_).
             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
             _M_impl._M_start;
  if (__args_0 ==
      (this->section_list_).
      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
      _M_finish) {
    return;
  }
  do {
    while (((*__args_0)->flags_ & 2) == 0) {
LAB_000ace70:
      __args_0 = __args_0 + 1;
      if ((this->section_list_).
          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
          _M_finish == __args_0) {
        return;
      }
    }
    __position._M_current =
         (section_list->
         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.
         _M_finish;
    if (__position._M_current ==
        (section_list->
        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.
        _M_end_of_storage) {
      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::
      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);
      goto LAB_000ace70;
    }
    *__position._M_current = *__args_0;
    __args_0 = __args_0 + 1;
    (section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>
    )._M_impl._M_finish = __position._M_current + 1;
    if ((this->section_list_).
        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
        _M_finish == __args_0) {
      return;
    }
  } while( true );
}



void FUN_000ace50(int param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  
  piVar2 = *(int **)(param_1 + 0x130);
  if (piVar2 == *(int **)(param_1 + 0x134)) {
    return;
  }
  do {
    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {
LAB_000ace70:
      piVar2 = piVar2 + 1;
      if (*(int **)(param_1 + 0x134) == piVar2) {
        return;
      }
    }
    piVar1 = *(int **)(param_2 + 4);
    if (piVar1 == *(int **)(param_2 + 8)) {
      FUN_000b7440(param_2,piVar1,piVar2);
      goto LAB_000ace70;
    }
    *piVar1 = *piVar2;
    piVar2 = piVar2 + 1;
    *(int **)(param_2 + 4) = piVar1 + 1;
    if (*(int **)(param_1 + 0x134) == piVar2) {
      return;
    }
  } while( true );
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [ESP + 0x14]
MOV EBX,dword ptr [ESI + 0x130]
CMP EBX,dword ptr [ESI + 0x134]
JNZ 0x000ace7b
JMP 0x000ace9e
ADD EBX,0x4
CMP dword ptr [ESI + 0x134],EBX
JZ 0x000ace9e
MOV EAX,dword ptr [EBX]
TEST byte ptr [EAX + 0x54],0x2
JZ 0x000ace70
MOV EDX,dword ptr [EDI + 0x4]
CMP EDX,dword ptr [EDI + 0x8]
JZ 0x000acea8
MOV dword ptr [EDX],EAX
ADD EDX,0x4
ADD EBX,0x4
MOV dword ptr [EDI + 0x4],EDX
CMP dword ptr [ESI + 0x134],EBX
JNZ 0x000ace7b
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0x4
PUSH EBX
PUSH EDX
PUSH EDI
CALL 0x000b7440
ADD ESP,0x10
JMP 0x000ace70
(translation_unit "void FUN_000ace50(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_000ace50(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_000ace50(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x130);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x130)" identifier = (pointer_expression "*(int **)(param_1 + 0x130)" * (cast_expression "(int **)(param_1 + 0x130)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }" if (parenthesized_expression "(piVar2 == *(int **)(param_1 + 0x134))" ( (binary_expression "piVar2 == *(int **)(param_1 + 0x134)" identifier == (pointer_expression "*(int **)(param_1 + 0x134)" * (cast_expression "(int **)(param_1 + 0x134)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  }" { (while_statement "while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }" while (parenthesized_expression "((*(byte *)(*piVar2 + 0x54) & 2) == 0)" ( (binary_expression "(*(byte *)(*piVar2 + 0x54) & 2) == 0" (parenthesized_expression "(*(byte *)(*piVar2 + 0x54) & 2)" ( (binary_expression "*(byte *)(*piVar2 + 0x54) & 2" (pointer_expression "*(byte *)(*piVar2 + 0x54)" * (cast_expression "(byte *)(*piVar2 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x54)" ( (binary_expression "*piVar2 + 0x54" (pointer_expression "*piVar2" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }" { (labeled_statement "LAB_000ace70:\n      piVar2 = piVar2 + 1;" statement_identifier : (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;)) (if_statement "if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }" if (parenthesized_expression "(*(int **)(param_1 + 0x134) == piVar2)" ( (binary_expression "*(int **)(param_1 + 0x134) == piVar2" (pointer_expression "*(int **)(param_1 + 0x134)" * (cast_expression "(int **)(param_1 + 0x134)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "piVar1 = *(int **)(param_2 + 4);" (assignment_expression "piVar1 = *(int **)(param_2 + 4)" identifier = (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }" if (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" ( (binary_expression "piVar1 == *(int **)(param_2 + 8)" identifier == (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }" { (expression_statement "FUN_000b7440(param_2,piVar1,piVar2);" (call_expression "FUN_000b7440(param_2,piVar1,piVar2)" identifier (argument_list "(param_2,piVar1,piVar2)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000ace70;" goto statement_identifier ;) })) (expression_statement "*piVar1 = *piVar2;" (assignment_expression "*piVar1 = *piVar2" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (expression_statement "*(int **)(param_2 + 4) = piVar1 + 1;" (assignment_expression "*(int **)(param_2 + 4) = piVar1 + 1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "piVar1 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }" if (parenthesized_expression "(*(int **)(param_1 + 0x134) == piVar2)" ( (binary_expression "*(int **)(param_1 + 0x134) == piVar2" (pointer_expression "*(int **)(param_1 + 0x134)" * (cast_expression "(int **)(param_1 + 0x134)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void get_allocated_sections(Layout * this, Section_list * section_list)\n    */\n\nvoid __thiscall gold::Layout::get_allocated_sections(Layout *this,Section_list *section_list)\n\n{\n  iterator __position;\n  Output_section **__args_0;\n  \n  __args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_start;\n  if (__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    return;\n  }\n  do {\n    while (((*__args_0)->flags_ & 2) == 0) {\nLAB_000ace70:\n      __args_0 = __args_0 + 1;\n      if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }\n    }\n    __position._M_current =\n         (section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);\n      goto LAB_000ace70;\n    }\n    *__position._M_current = *__args_0;\n    __args_0 = __args_0 + 1;\n    (section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish = __position._M_current + 1;\n    if ((this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0) {\n      return;\n    }\n  } while( true );\n}\n\n" comment comment (function_definition "void __thiscall gold::Layout::get_allocated_sections(Layout *this,Section_list *section_list)\n\n{\n  iterator __position;\n  Output_section **__args_0;\n  \n  __args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_start;\n  if (__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    return;\n  }\n  do {\n    while (((*__args_0)->flags_ & 2) == 0) {\nLAB_000ace70:\n      __args_0 = __args_0 + 1;\n      if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }\n    }\n    __position._M_current =\n         (section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);\n      goto LAB_000ace70;\n    }\n    *__position._M_current = *__args_0;\n    __args_0 = __args_0 + 1;\n    (section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish = __position._M_current + 1;\n    if ((this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0) {\n      return;\n    }\n  } while( true );\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "get_allocated_sections(Layout *this,Section_list *section_list)" identifier (parameter_list "(Layout *this,Section_list *section_list)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Section_list *section_list" type_identifier (pointer_declarator "*section_list" * identifier)) ))) (compound_statement "{\n  iterator __position;\n  Output_section **__args_0;\n  \n  __args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_start;\n  if (__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    return;\n  }\n  do {\n    while (((*__args_0)->flags_ & 2) == 0) {\nLAB_000ace70:\n      __args_0 = __args_0 + 1;\n      if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }\n    }\n    __position._M_current =\n         (section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);\n      goto LAB_000ace70;\n    }\n    *__position._M_current = *__args_0;\n    __args_0 = __args_0 + 1;\n    (section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish = __position._M_current + 1;\n    if ((this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0) {\n      return;\n    }\n  } while( true );\n}" { (declaration "iterator __position;" type_identifier identifier ;) (declaration "Output_section **__args_0;" type_identifier (pointer_declarator "**__args_0" * (pointer_declarator "*__args_0" * identifier)) ;) (expression_statement "__args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_start;" (field_expression "__args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_start" (field_expression "__args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl" (binary_expression "__args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "__args_0 = (this->section_list_).\n             super__Vector_base<gold::Output_section*,_std" (assignment_expression "__args_0 = (this->section_list_).\n             super__Vector_base<gold" identifier = (binary_expression "(this->section_list_).\n             super__Vector_base<gold" (field_expression "(this->section_list_).\n             super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    return;\n  }" if (parenthesized_expression "(__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish)" ( (field_expression "__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish" (field_expression "__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std" (binary_expression "__args_0 ==\n      (this->section_list_).\n      super__Vector_base<gold" identifier == (binary_expression "(this->section_list_).\n      super__Vector_base<gold" (field_expression "(this->section_list_).\n      super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    while (((*__args_0)->flags_ & 2) == 0) {\nLAB_000ace70:\n      __args_0 = __args_0 + 1;\n      if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }\n    }\n    __position._M_current =\n         (section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);\n      goto LAB_000ace70;\n    }\n    *__position._M_current = *__args_0;\n    __args_0 = __args_0 + 1;\n    (section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish = __position._M_current + 1;\n    if ((this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while (((*__args_0)->flags_ & 2) == 0) {\nLAB_000ace70:\n      __args_0 = __args_0 + 1;\n      if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }\n    }\n    __position._M_current =\n         (section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);\n      goto LAB_000ace70;\n    }\n    *__position._M_current = *__args_0;\n    __args_0 = __args_0 + 1;\n    (section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish = __position._M_current + 1;\n    if ((this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0) {\n      return;\n    }\n  }" { (while_statement "while (((*__args_0)->flags_ & 2) == 0) {\nLAB_000ace70:\n      __args_0 = __args_0 + 1;\n      if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }\n    }" while (parenthesized_expression "(((*__args_0)->flags_ & 2) == 0)" ( (binary_expression "((*__args_0)->flags_ & 2) == 0" (parenthesized_expression "((*__args_0)->flags_ & 2)" ( (binary_expression "(*__args_0)->flags_ & 2" (field_expression "(*__args_0)->flags_" (parenthesized_expression "(*__args_0)" ( (pointer_expression "*__args_0" * identifier) )) -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000ace70:\n      __args_0 = __args_0 + 1;\n      if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }\n    }" { (labeled_statement "LAB_000ace70:\n      __args_0 = __args_0 + 1;" statement_identifier : (expression_statement "__args_0 = __args_0 + 1;" (assignment_expression "__args_0 = __args_0 + 1" identifier = (binary_expression "__args_0 + 1" identifier + number_literal)) ;)) (if_statement "if ((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0) {\n        return;\n      }" if (parenthesized_expression "((this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0)" ( (binary_expression "(this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish == __args_0" (field_expression "(this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n          _M_finish" (field_expression "(this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "(this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->section_list_).\n          super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->section_list_).\n          super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->section_list_).\n          super__Vector_base<gold" (field_expression "(this->section_list_).\n          super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "__position._M_current =\n         (section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish;" (assignment_expression "__position._M_current =\n         (section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish" (field_expression "__position._M_current" identifier . field_identifier) = (field_expression "(section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n         _M_finish" (field_expression "(section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl" (parenthesized_expression "(section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "section_list->\n         super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "section_list->\n         super__Vector_base<gold::Output_section*,_std" (binary_expression "section_list->\n         super__Vector_base<gold" (field_expression "section_list->\n         super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);\n      goto LAB_000ace70;\n    }" if (parenthesized_expression "(__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage)" ( (binary_expression "__position._M_current ==\n        (section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage" (field_expression "__position._M_current" identifier . field_identifier) == (field_expression "(section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl.\n        _M_end_of_storage" (field_expression "(section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)._M_impl" (parenthesized_expression "(section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>)" ( (binary_expression "section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "section_list->\n        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "section_list->\n        super__Vector_base<gold::Output_section*,_std" (binary_expression "section_list->\n        super__Vector_base<gold" (field_expression "section_list->\n        super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n      std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::Output_section*_const&>(section_list,__position,__args_0);\n      goto LAB_000ace70;\n    }" { (ERROR "std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>::\n      _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Output_section*,_std" identifier (ERROR "::vector<gold::Output_section*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Output_section*>_>::\n      _M_realloc_insert<gold" (binary_expression "Output_section*>_>::\n      _M_realloc_insert" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Output_section*_const&>(section_list,__position,__args_0);" (binary_expression "Output_section*_const&>(section_list,__position,__args_0)" (binary_expression "Output_section*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(section_list,__position,__args_0)" ( (comma_expression "section_list,__position,__args_0" identifier , (comma_expression "__position,__args_0" identifier , identifier)) ))) ;) (goto_statement "goto LAB_000ace70;" goto statement_identifier ;) })) (expression_statement "*__position._M_current = *__args_0;" (assignment_expression "*__position._M_current = *__args_0" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = (pointer_expression "*__args_0" * identifier)) ;) (expression_statement "__args_0 = __args_0 + 1;" (assignment_expression "__args_0 = __args_0 + 1" identifier = (binary_expression "__args_0 + 1" identifier + number_literal)) ;) (expression_statement "(section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish = __position._M_current + 1;" (assignment_expression "(section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish = __position._M_current + 1" (field_expression "(section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl._M_finish" (field_expression "(section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )._M_impl" (parenthesized_expression "(section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>\n    )" ( (binary_expression "section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>" (binary_expression "section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "section_list->super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "section_list->super__Vector_base<gold::Output_section*,_std" (binary_expression "section_list->super__Vector_base<gold" (field_expression "section_list->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) (if_statement "if ((this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0) {\n      return;\n    }" if (parenthesized_expression "((this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0)" ( (binary_expression "(this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish == __args_0" (field_expression "(this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n        _M_finish" (field_expression "(this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "(this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->section_list_).\n        super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->section_list_).\n        super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->section_list_).\n        super__Vector_base<gold" (field_expression "(this->section_list_).\n        super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_000ace50(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}\n\n" (function_definition "void FUN_000ace50(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_000ace50(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x130);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x130)" identifier = (pointer_expression "*(int **)(param_1 + 0x130)" * (cast_expression "(int **)(param_1 + 0x130)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }" if (parenthesized_expression "(piVar2 == *(int **)(param_1 + 0x134))" ( (binary_expression "piVar2 == *(int **)(param_1 + 0x134)" identifier == (pointer_expression "*(int **)(param_1 + 0x134)" * (cast_expression "(int **)(param_1 + 0x134)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (do_statement "do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  }" { (while_statement "while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }" while (parenthesized_expression "((*(byte *)(*piVar2 + 0x54) & 2) == 0)" ( (binary_expression "(*(byte *)(*piVar2 + 0x54) & 2) == 0" (parenthesized_expression "(*(byte *)(*piVar2 + 0x54) & 2)" ( (binary_expression "*(byte *)(*piVar2 + 0x54) & 2" (pointer_expression "*(byte *)(*piVar2 + 0x54)" * (cast_expression "(byte *)(*piVar2 + 0x54)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x54)" ( (binary_expression "*piVar2 + 0x54" (pointer_expression "*piVar2" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }" { (labeled_statement "LAB_000ace70:\n      piVar2 = piVar2 + 1;" statement_identifier : (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;)) (if_statement "if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }" if (parenthesized_expression "(*(int **)(param_1 + 0x134) == piVar2)" ( (binary_expression "*(int **)(param_1 + 0x134) == piVar2" (pointer_expression "*(int **)(param_1 + 0x134)" * (cast_expression "(int **)(param_1 + 0x134)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "piVar1 = *(int **)(param_2 + 4);" (assignment_expression "piVar1 = *(int **)(param_2 + 4)" identifier = (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }" if (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" ( (binary_expression "piVar1 == *(int **)(param_2 + 8)" identifier == (pointer_expression "*(int **)(param_2 + 8)" * (cast_expression "(int **)(param_2 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }" { (expression_statement "FUN_000b7440(param_2,piVar1,piVar2);" (call_expression "FUN_000b7440(param_2,piVar1,piVar2)" identifier (argument_list "(param_2,piVar1,piVar2)" ( identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_000ace70;" goto statement_identifier ;) })) (expression_statement "*piVar1 = *piVar2;" (assignment_expression "*piVar1 = *piVar2" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (expression_statement "*(int **)(param_2 + 4) = piVar1 + 1;" (assignment_expression "*(int **)(param_2 + 4) = piVar1 + 1" (pointer_expression "*(int **)(param_2 + 4)" * (cast_expression "(int **)(param_2 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = (binary_expression "piVar1 + 1" identifier + number_literal)) ;) (if_statement "if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }" if (parenthesized_expression "(*(int **)(param_1 + 0x134) == piVar2)" ( (binary_expression "*(int **)(param_1 + 0x134) == piVar2" (pointer_expression "*(int **)(param_1 + 0x134)" * (cast_expression "(int **)(param_1 + 0x134)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x134)" ( (binary_expression "param_1 + 0x134" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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) ))))) ;) (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 { (return_statement return ;) })) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 ( IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_000ace50(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_000ace50(int param_1,int param_2)" (identifier "FUN_000ace50") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  \n  piVar2 = *(int **)(param_1 + 0x130);\n  if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }\n  do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (expression_statement "piVar2 = *(int **)(param_1 + 0x130);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x130)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x130)" (* "*") (cast_expression "(int **)(param_1 + 0x130)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (; ";")) (if_statement "if (piVar2 == *(int **)(param_1 + 0x134)) {\n    return;\n  }" (if "if") (parenthesized_expression "(piVar2 == *(int **)(param_1 + 0x134))" (( "(") (binary_expression "piVar2 == *(int **)(param_1 + 0x134)" (identifier "piVar2") (== "==") (pointer_expression "*(int **)(param_1 + 0x134)" (* "*") (cast_expression "(int **)(param_1 + 0x134)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x134)" (( "(") (binary_expression "param_1 + 0x134" (identifier "param_1") (+ "+") (number_literal "0x134")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }\n    piVar1 = *(int **)(param_2 + 4);\n    if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }\n    *piVar1 = *piVar2;\n    piVar2 = piVar2 + 1;\n    *(int **)(param_2 + 4) = piVar1 + 1;\n    if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }\n  }" ({ "{") (while_statement "while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }" (while "while") (parenthesized_expression "((*(byte *)(*piVar2 + 0x54) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(*piVar2 + 0x54) & 2) == 0" (parenthesized_expression "(*(byte *)(*piVar2 + 0x54) & 2)" (( "(") (binary_expression "*(byte *)(*piVar2 + 0x54) & 2" (pointer_expression "*(byte *)(*piVar2 + 0x54)" (* "*") (cast_expression "(byte *)(*piVar2 + 0x54)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar2 + 0x54)" (( "(") (binary_expression "*piVar2 + 0x54" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x54")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000ace70:\n      piVar2 = piVar2 + 1;\n      if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }\n    }" ({ "{") (labeled_statement "LAB_000ace70:\n      piVar2 = piVar2 + 1;" (statement_identifier "LAB_000ace70") (: ":") (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (*(int **)(param_1 + 0x134) == piVar2) {\n        return;\n      }" (if "if") (parenthesized_expression "(*(int **)(param_1 + 0x134) == piVar2)" (( "(") (binary_expression "*(int **)(param_1 + 0x134) == piVar2" (pointer_expression "*(int **)(param_1 + 0x134)" (* "*") (cast_expression "(int **)(param_1 + 0x134)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x134)" (( "(") (binary_expression "param_1 + 0x134" (identifier "param_1") (+ "+") (number_literal "0x134")) () ")")))) (== "==") (identifier "piVar2")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar1 = *(int **)(param_2 + 4);" (assignment_expression "piVar1 = *(int **)(param_2 + 4)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (piVar1 == *(int **)(param_2 + 8)) {\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }" (if "if") (parenthesized_expression "(piVar1 == *(int **)(param_2 + 8))" (( "(") (binary_expression "piVar1 == *(int **)(param_2 + 8)" (identifier "piVar1") (== "==") (pointer_expression "*(int **)(param_2 + 8)" (* "*") (cast_expression "(int **)(param_2 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n      FUN_000b7440(param_2,piVar1,piVar2);\n      goto LAB_000ace70;\n    }" ({ "{") (expression_statement "FUN_000b7440(param_2,piVar1,piVar2);" (call_expression "FUN_000b7440(param_2,piVar1,piVar2)" (identifier "FUN_000b7440") (argument_list "(param_2,piVar1,piVar2)" (( "(") (identifier "param_2") (, ",") (identifier "piVar1") (, ",") (identifier "piVar2") () ")"))) (; ";")) (goto_statement "goto LAB_000ace70;" (goto "goto") (statement_identifier "LAB_000ace70") (; ";")) (} "}"))) (expression_statement "*piVar1 = *piVar2;" (assignment_expression "*piVar1 = *piVar2" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int **)(param_2 + 4) = piVar1 + 1;" (assignment_expression "*(int **)(param_2 + 4) = piVar1 + 1" (pointer_expression "*(int **)(param_2 + 4)" (* "*") (cast_expression "(int **)(param_2 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "piVar1 + 1" (identifier "piVar1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int **)(param_1 + 0x134) == piVar2) {\n      return;\n    }" (if "if") (parenthesized_expression "(*(int **)(param_1 + 0x134) == piVar2)" (( "(") (binary_expression "*(int **)(param_1 + 0x134) == piVar2" (pointer_expression "*(int **)(param_1 + 0x134)" (* "*") (cast_expression "(int **)(param_1 + 0x134)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x134)" (( "(") (binary_expression "param_1 + 0x134" (identifier "param_1") (+ "+") (number_literal "0x134")) () ")")))) (== "==") (identifier "piVar2")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void get_allocated_sections(Layout * this, Section_list * section_list)
    */

void __thiscall var_1::type_1::function_1(type_1 *this,type_2 *section_list)

{
  type_3 __position;
  type_4 **var_4;
  
  var_4 = (this->section_list_).
             super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>.
             _M_impl._M_start;
  if (var_4 ==
      (this->section_list_).
      super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>._M_impl.
      _M_finish) {
    return;
  }
  do {
    while (((*var_4)->flags_ & 2) == 0) {
LAB_000ace70:
      var_4 = var_4 + 1;
      if ((this->section_list_).
          super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>._M_impl.
          _M_finish == var_4) {
        return;
      }
    }
    __position._M_current =
         (section_list->
         super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>var_5)._M_impl.
         _M_finish;
    if (__position._M_current ==
        (section_list->
        super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>var_5)._M_impl.
        _M_end_of_storage) {
      std::vector<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>::
      _M_realloc_insert<var_1::type_4*var_6&>(section_list,__position,var_4);
      goto LAB_000ace70;
    }
    *__position._M_current = *var_4;
    var_4 = var_4 + 1;
    (section_list->super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>var_5
    )._M_impl._M_finish = __position._M_current + 1;
    if ((this->section_list_).
        super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>._M_impl.
        _M_finish == var_4) {
      return;
    }
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) body: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (return_statement))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (return_statement)))) condition: (parenthesized_expression (true))))))

void MASKED(int param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  
  piVar2 = *(int **)(param_1 + 0x130);
  if (piVar2 == *(int **)(param_1 + 0x134)) {
    return;
  }
  do {
    while ((*(byte *)(*piVar2 + 0x54) & 2) == 0) {
LAB_000ace70:
      piVar2 = piVar2 + 1;
      if (*(int **)(param_1 + 0x134) == piVar2) {
        return;
      }
    }
    piVar1 = *(int **)(param_2 + 4);
    if (piVar1 == *(int **)(param_2 + 8)) {
      FUN_000b7440(param_2,piVar1,piVar2);
      goto LAB_000ace70;
    }
    *piVar1 = *piVar2;
    piVar2 = piVar2 + 1;
    *(int **)(param_2 + 4) = piVar1 + 1;
    if (*(int **)(param_1 + 0x134) == piVar2) {
      return;
    }
  } while( true );
}

