
/* DWARF original prototype: void set_defsym_uses_in_real_elf(Script_options * this, Symbol_table *
   symtab) */

void __thiscall
gold::Script_options::set_defsym_uses_in_real_elf(Script_options *this,Symbol_table *symtab)

{
  Symbol_assignment *pSVar1;
  _func_int_varargs *p_Var2;
  pointer ppSVar3;
  
  ppSVar3 = (this->symbol_assignments_).
            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.
            _M_impl._M_start;
  if (ppSVar3 !=
      (this->symbol_assignments_).
      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.
      _M_impl._M_finish) {
    do {
      while( true ) {
        pSVar1 = *ppSVar3;
        p_Var2 = pSVar1->val_->_vptr_Expression[4];
        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;
        ppSVar3 = ppSVar3 + 1;
        (*p_Var2)(pSVar1->val_,symtab);
        if ((this->symbol_assignments_).
            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.
            _M_impl._M_finish == ppSVar3) {
          return;
        }
      }
      ppSVar3 = ppSVar3 + 1;
    } while ((this->symbol_assignments_).
             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>
             ._M_impl._M_finish != ppSVar3);
  }
  return;
}



void FUN_00264690(long param_1,undefined8 param_2)

{
  long lVar1;
  code *pcVar2;
  long *plVar3;
  
  plVar3 = *(long **)(param_1 + 0x20);
  if (plVar3 != *(long **)(param_1 + 0x28)) {
    do {
      while( true ) {
        lVar1 = *plVar3;
        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);
        if (pcVar2 == FUN_00268e40) break;
        plVar3 = plVar3 + 1;
        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);
        if (*(long **)(param_1 + 0x28) == plVar3) {
          return;
        }
      }
      plVar3 = plVar3 + 1;
    } while (*(long **)(param_1 + 0x28) != plVar3);
  }
  return;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [RDI + 0x20]
CMP RBX,qword ptr [RDI + 0x28]
JZ 0x002646e6
MOV RBP,RSI
MOV R12,RDI
LEA R13,[0x268e40]
JMP 0x002646c3
ADD RBX,0x8
CMP qword ptr [R12 + 0x28],RBX
JZ 0x002646e6
MOV RAX,qword ptr [RBX]
MOV RDI,qword ptr [RAX + 0x20]
MOV RAX,qword ptr [RDI]
MOV RAX,qword ptr [RAX + 0x20]
CMP RAX,R13
JZ 0x002646b8
MOV RSI,RBP
ADD RBX,0x8
CALL RAX
CMP qword ptr [R12 + 0x28],RBX
JNZ 0x002646c3
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
(translation_unit "void FUN_00264690(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00264690(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00264690(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (expression_statement "plVar3 = *(long **)(param_1 + 0x20);" (assignment_expression "plVar3 = *(long **)(param_1 + 0x20)" identifier = (pointer_expression "*(long **)(param_1 + 0x20)" * (cast_expression "(long **)(param_1 + 0x20)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }" if (parenthesized_expression "(plVar3 != *(long **)(param_1 + 0x28))" ( (binary_expression "plVar3 != *(long **)(param_1 + 0x28)" identifier != (pointer_expression "*(long **)(param_1 + 0x28)" * (cast_expression "(long **)(param_1 + 0x28)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }" { (do_statement "do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);" do (compound_statement "{\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    }" { (while_statement "while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }" { (expression_statement "lVar1 = *plVar3;" (assignment_expression "lVar1 = *plVar3" identifier = (pointer_expression "*plVar3" * identifier)) ;) (expression_statement "pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);" (assignment_expression "pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20)" identifier = (pointer_expression "*(code **)(**(long **)(lVar1 + 0x20) + 0x20)" * (cast_expression "(code **)(**(long **)(lVar1 + 0x20) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(lVar1 + 0x20) + 0x20)" ( (binary_expression "**(long **)(lVar1 + 0x20) + 0x20" (pointer_expression "**(long **)(lVar1 + 0x20)" * (pointer_expression "*(long **)(lVar1 + 0x20)" * (cast_expression "(long **)(lVar1 + 0x20)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00268e40) break;" if (parenthesized_expression "(pcVar2 == FUN_00268e40)" ( (binary_expression "pcVar2 == FUN_00268e40" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) (expression_statement "(*pcVar2)(*(long **)(lVar1 + 0x20),param_2);" (call_expression "(*pcVar2)(*(long **)(lVar1 + 0x20),param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(*(long **)(lVar1 + 0x20),param_2)" ( (pointer_expression "*(long **)(lVar1 + 0x20)" * (cast_expression "(long **)(lVar1 + 0x20)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) )))) , identifier ))) ;) (if_statement "if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }" if (parenthesized_expression "(*(long **)(param_1 + 0x28) == plVar3)" ( (binary_expression "*(long **)(param_1 + 0x28) == plVar3" (pointer_expression "*(long **)(param_1 + 0x28)" * (cast_expression "(long **)(param_1 + 0x28)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(long **)(param_1 + 0x28) != plVar3)" ( (binary_expression "*(long **)(param_1 + 0x28) != plVar3" (pointer_expression "*(long **)(param_1 + 0x28)" * (cast_expression "(long **)(param_1 + 0x28)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void set_defsym_uses_in_real_elf(Script_options * this, Symbol_table *\n   symtab) */\n\nvoid __thiscall\ngold::Script_options::set_defsym_uses_in_real_elf(Script_options *this,Symbol_table *symtab)\n\n{\n  Symbol_assignment *pSVar1;\n  _func_int_varargs *p_Var2;\n  pointer ppSVar3;\n  \n  ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;\n  if (ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }\n      ppSVar3 = ppSVar3 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Script_options::set_defsym_uses_in_real_elf(Script_options *this,Symbol_table *symtab)\n\n{\n  Symbol_assignment *pSVar1;\n  _func_int_varargs *p_Var2;\n  pointer ppSVar3;\n  \n  ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;\n  if (ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }\n      ppSVar3 = ppSVar3 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_options::" identifier : : identifier : :) (function_declarator "set_defsym_uses_in_real_elf(Script_options *this,Symbol_table *symtab)" identifier (parameter_list "(Script_options *this,Symbol_table *symtab)" ( (parameter_declaration "Script_options *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) ))) (compound_statement "{\n  Symbol_assignment *pSVar1;\n  _func_int_varargs *p_Var2;\n  pointer ppSVar3;\n  \n  ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;\n  if (ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }\n      ppSVar3 = ppSVar3 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3);\n  }\n  return;\n}" { (declaration "Symbol_assignment *pSVar1;" type_identifier (pointer_declarator "*pSVar1" * identifier) ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "pointer ppSVar3;" type_identifier identifier ;) (expression_statement "ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start;" (field_expression "ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_start" (field_expression "ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl" (binary_expression "ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_" (binary_expression "ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold" (binary_expression "ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std" (assignment_expression "ppSVar3 = (this->symbol_assignments_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->symbol_assignments_).\n            super__Vector_base<gold" (field_expression "(this->symbol_assignments_).\n            super__Vector_base" (parenthesized_expression "(this->symbol_assignments_)" ( (field_expression "this->symbol_assignments_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol_assignment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish) {\n    do {\n      while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }\n      ppSVar3 = ppSVar3 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3);\n  }" if (parenthesized_expression "(ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish)" ( (field_expression "ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl._M_finish" (field_expression "ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n      _M_impl" (binary_expression "ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_" (binary_expression "ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold" (binary_expression "ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold::Symbol_assignment*,_std" (binary_expression "ppSVar3 !=\n      (this->symbol_assignments_).\n      super__Vector_base<gold" identifier != (binary_expression "(this->symbol_assignments_).\n      super__Vector_base<gold" (field_expression "(this->symbol_assignments_).\n      super__Vector_base" (parenthesized_expression "(this->symbol_assignments_)" ( (field_expression "this->symbol_assignments_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol_assignment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    do {\n      while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }\n      ppSVar3 = ppSVar3 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3);\n  }" { (do_statement "do {\n      while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }\n      ppSVar3 = ppSVar3 + 1;\n    } while ((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3);" do (compound_statement "{\n      while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }\n      ppSVar3 = ppSVar3 + 1;\n    }" { (while_statement "while( true ) {\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pSVar1 = *ppSVar3;\n        p_Var2 = pSVar1->val_->_vptr_Expression[4];\n        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;\n        ppSVar3 = ppSVar3 + 1;\n        (*p_Var2)(pSVar1->val_,symtab);\n        if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }\n      }" { (expression_statement "pSVar1 = *ppSVar3;" (assignment_expression "pSVar1 = *ppSVar3" identifier = (pointer_expression "*ppSVar3" * identifier)) ;) (expression_statement "p_Var2 = pSVar1->val_->_vptr_Expression[4];" (assignment_expression "p_Var2 = pSVar1->val_->_vptr_Expression[4]" identifier = (subscript_expression "pSVar1->val_->_vptr_Expression[4]" (field_expression "pSVar1->val_->_vptr_Expression" (field_expression "pSVar1->val_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;" if (parenthesized_expression "(p_Var2 == Expression::set_expr_sym_in_real_elf)" ( (ERROR "p_Var2 == Expression::" (binary_expression "p_Var2 == Expression" identifier == identifier) : :) identifier )) (break_statement "break;" break ;)) (expression_statement "ppSVar3 = ppSVar3 + 1;" (assignment_expression "ppSVar3 = ppSVar3 + 1" identifier = (binary_expression "ppSVar3 + 1" identifier + number_literal)) ;) (expression_statement "(*p_Var2)(pSVar1->val_,symtab);" (call_expression "(*p_Var2)(pSVar1->val_,symtab)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(pSVar1->val_,symtab)" ( (field_expression "pSVar1->val_" identifier -> field_identifier) , identifier ))) ;) (if_statement "if ((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3) {\n          return;\n        }" if (parenthesized_expression "((this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3)" ( (binary_expression "(this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish == ppSVar3" (field_expression "(this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl._M_finish" (field_expression "(this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>.\n            _M_impl" (binary_expression "(this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_" (binary_expression "(this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold" (binary_expression "(this->symbol_assignments_).\n            super__Vector_base<gold::Symbol_assignment*,_std" (binary_expression "(this->symbol_assignments_).\n            super__Vector_base<gold" (field_expression "(this->symbol_assignments_).\n            super__Vector_base" (parenthesized_expression "(this->symbol_assignments_)" ( (field_expression "this->symbol_assignments_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "ppSVar3 = ppSVar3 + 1;" (assignment_expression "ppSVar3 = ppSVar3 + 1" identifier = (binary_expression "ppSVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3)" ( (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish != ppSVar3" (field_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl._M_finish" (field_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_>\n             ._M_impl" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold::Symbol_assignment*>_" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std::allocator<gold" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold::Symbol_assignment*,_std" (binary_expression "(this->symbol_assignments_).\n             super__Vector_base<gold" (field_expression "(this->symbol_assignments_).\n             super__Vector_base" (parenthesized_expression "(this->symbol_assignments_)" ( (field_expression "this->symbol_assignments_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol_assignment" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00264690(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00264690(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00264690(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (expression_statement "plVar3 = *(long **)(param_1 + 0x20);" (assignment_expression "plVar3 = *(long **)(param_1 + 0x20)" identifier = (pointer_expression "*(long **)(param_1 + 0x20)" * (cast_expression "(long **)(param_1 + 0x20)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }" if (parenthesized_expression "(plVar3 != *(long **)(param_1 + 0x28))" ( (binary_expression "plVar3 != *(long **)(param_1 + 0x28)" identifier != (pointer_expression "*(long **)(param_1 + 0x28)" * (cast_expression "(long **)(param_1 + 0x28)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }" { (do_statement "do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);" do (compound_statement "{\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    }" { (while_statement "while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }" { (expression_statement "lVar1 = *plVar3;" (assignment_expression "lVar1 = *plVar3" identifier = (pointer_expression "*plVar3" * identifier)) ;) (expression_statement "pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);" (assignment_expression "pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20)" identifier = (pointer_expression "*(code **)(**(long **)(lVar1 + 0x20) + 0x20)" * (cast_expression "(code **)(**(long **)(lVar1 + 0x20) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(lVar1 + 0x20) + 0x20)" ( (binary_expression "**(long **)(lVar1 + 0x20) + 0x20" (pointer_expression "**(long **)(lVar1 + 0x20)" * (pointer_expression "*(long **)(lVar1 + 0x20)" * (cast_expression "(long **)(lVar1 + 0x20)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (pcVar2 == FUN_00268e40) break;" if (parenthesized_expression "(pcVar2 == FUN_00268e40)" ( (binary_expression "pcVar2 == FUN_00268e40" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) (expression_statement "(*pcVar2)(*(long **)(lVar1 + 0x20),param_2);" (call_expression "(*pcVar2)(*(long **)(lVar1 + 0x20),param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(*(long **)(lVar1 + 0x20),param_2)" ( (pointer_expression "*(long **)(lVar1 + 0x20)" * (cast_expression "(long **)(lVar1 + 0x20)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x20)" ( (binary_expression "lVar1 + 0x20" identifier + number_literal) )))) , identifier ))) ;) (if_statement "if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }" if (parenthesized_expression "(*(long **)(param_1 + 0x28) == plVar3)" ( (binary_expression "*(long **)(param_1 + 0x28) == plVar3" (pointer_expression "*(long **)(param_1 + 0x28)" * (cast_expression "(long **)(param_1 + 0x28)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(long **)(param_1 + 0x28) != plVar3)" ( (binary_expression "*(long **)(param_1 + 0x28) != plVar3" (pointer_expression "*(long **)(param_1 + 0x28)" * (cast_expression "(long **)(param_1 + 0x28)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) != 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) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression 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 (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00264690(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00264690(long param_1,undefined8 param_2)" (identifier "FUN_00264690") (parameter_list "(long param_1,undefined8 param_2)" (( "(") (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")) () ")"))) (compound_statement "{\n  long lVar1;\n  code *pcVar2;\n  long *plVar3;\n  \n  plVar3 = *(long **)(param_1 + 0x20);\n  if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (expression_statement "plVar3 = *(long **)(param_1 + 0x20);" (assignment_expression "plVar3 = *(long **)(param_1 + 0x20)" (identifier "plVar3") (= "=") (pointer_expression "*(long **)(param_1 + 0x20)" (* "*") (cast_expression "(long **)(param_1 + 0x20)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (plVar3 != *(long **)(param_1 + 0x28)) {\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }" (if "if") (parenthesized_expression "(plVar3 != *(long **)(param_1 + 0x28))" (( "(") (binary_expression "plVar3 != *(long **)(param_1 + 0x28)" (identifier "plVar3") (!= "!=") (pointer_expression "*(long **)(param_1 + 0x28)" (* "*") (cast_expression "(long **)(param_1 + 0x28)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);\n  }" ({ "{") (do_statement "do {\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    } while (*(long **)(param_1 + 0x28) != plVar3);" (do "do") (compound_statement "{\n      while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }\n      plVar3 = plVar3 + 1;\n    }" ({ "{") (while_statement "while( true ) {\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        lVar1 = *plVar3;\n        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);\n        if (pcVar2 == FUN_00268e40) break;\n        plVar3 = plVar3 + 1;\n        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);\n        if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }\n      }" ({ "{") (expression_statement "lVar1 = *plVar3;" (assignment_expression "lVar1 = *plVar3" (identifier "lVar1") (= "=") (pointer_expression "*plVar3" (* "*") (identifier "plVar3"))) (; ";")) (expression_statement "pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);" (assignment_expression "pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(**(long **)(lVar1 + 0x20) + 0x20)" (* "*") (cast_expression "(code **)(**(long **)(lVar1 + 0x20) + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(lVar1 + 0x20) + 0x20)" (( "(") (binary_expression "**(long **)(lVar1 + 0x20) + 0x20" (pointer_expression "**(long **)(lVar1 + 0x20)" (* "*") (pointer_expression "*(long **)(lVar1 + 0x20)" (* "*") (cast_expression "(long **)(lVar1 + 0x20)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x20)" (( "(") (binary_expression "lVar1 + 0x20" (identifier "lVar1") (+ "+") (number_literal "0x20")) () ")"))))) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (pcVar2 == FUN_00268e40) break;" (if "if") (parenthesized_expression "(pcVar2 == FUN_00268e40)" (( "(") (binary_expression "pcVar2 == FUN_00268e40" (identifier "pcVar2") (== "==") (identifier "FUN_00268e40")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" (identifier "plVar3") (= "=") (binary_expression "plVar3 + 1" (identifier "plVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*pcVar2)(*(long **)(lVar1 + 0x20),param_2);" (call_expression "(*pcVar2)(*(long **)(lVar1 + 0x20),param_2)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(*(long **)(lVar1 + 0x20),param_2)" (( "(") (pointer_expression "*(long **)(lVar1 + 0x20)" (* "*") (cast_expression "(long **)(lVar1 + 0x20)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x20)" (( "(") (binary_expression "lVar1 + 0x20" (identifier "lVar1") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if (*(long **)(param_1 + 0x28) == plVar3) {\n          return;\n        }" (if "if") (parenthesized_expression "(*(long **)(param_1 + 0x28) == plVar3)" (( "(") (binary_expression "*(long **)(param_1 + 0x28) == plVar3" (pointer_expression "*(long **)(param_1 + 0x28)" (* "*") (cast_expression "(long **)(param_1 + 0x28)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (identifier "plVar3")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" (identifier "plVar3") (= "=") (binary_expression "plVar3 + 1" (identifier "plVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(long **)(param_1 + 0x28) != plVar3)" (( "(") (binary_expression "*(long **)(param_1 + 0x28) != plVar3" (pointer_expression "*(long **)(param_1 + 0x28)" (* "*") (cast_expression "(long **)(param_1 + 0x28)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (identifier "plVar3")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void set_defsym_uses_in_real_elf(Script_options * this, Symbol_table *
   symtab) */

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

{
  type_3 *pSVar1;
  type_4 *p_Var2;
  type_5 var_4;
  
  var_4 = (this->symbol_assignments_).
            super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>.
            _M_impl._M_start;
  if (var_4 !=
      (this->symbol_assignments_).
      super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>.
      _M_impl._M_finish) {
    do {
      while( true ) {
        pSVar1 = *var_4;
        p_Var2 = pSVar1->val_->_vptr_Expression[4];
        if (p_Var2 == Expression::set_expr_sym_in_real_elf) break;
        var_4 = var_4 + 1;
        (*p_Var2)(pSVar1->val_,symtab);
        if ((this->symbol_assignments_).
            super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>.
            _M_impl._M_finish == var_4) {
          return;
        }
      }
      var_4 = var_4 + 1;
    } while ((this->symbol_assignments_).
             super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>
             ._M_impl._M_finish != var_4);
  }
  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)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator 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 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: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) 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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (return_statement))))

void MASKED(long param_1,undefined8 param_2)

{
  long lVar1;
  code *pcVar2;
  long *plVar3;
  
  plVar3 = *(long **)(param_1 + 0x20);
  if (plVar3 != *(long **)(param_1 + 0x28)) {
    do {
      while( true ) {
        lVar1 = *plVar3;
        pcVar2 = *(code **)(**(long **)(lVar1 + 0x20) + 0x20);
        if (pcVar2 == FUN_00268e40) break;
        plVar3 = plVar3 + 1;
        (*pcVar2)(*(long **)(lVar1 + 0x20),param_2);
        if (*(long **)(param_1 + 0x28) == plVar3) {
          return;
        }
      }
      plVar3 = plVar3 + 1;
    } while (*(long **)(param_1 + 0x28) != plVar3);
  }
  return;
}

