
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare> > */

void std::
     __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>
               (int __first,int __last,undefined1 param_3)

{
  int iVar1;
  
  if (0x180 < __last - __first) {
    iVar1 = __first + 0x180;
    __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>
              (__first,iVar1,param_3);
    for (; __last != iVar1; iVar1 = iVar1 + 0x18) {
      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>
                (iVar1,0);
    }
    return;
  }
  __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>
            ();
  return;
}



void FUN_00156e40(int param_1,int param_2,undefined1 param_3)

{
  int iVar1;
  
  if (0x180 < param_2 - param_1) {
    iVar1 = param_1 + 0x180;
    FUN_00156b70(param_1,iVar1,param_3);
    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {
      FUN_001568f0(iVar1,0);
    }
    return;
  }
  FUN_00156b70();
  return;
}


PUSH ESI
PUSH EBX
SUB ESP,0x4
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x10]
MOVZX ECX,byte ptr [ESP + 0x18]
MOV EDX,ESI
SUB EDX,EAX
CMP EDX,0x180
JLE 0x00156ea0
SUB ESP,0x4
LEA EBX,[EAX + 0x180]
PUSH ECX
PUSH EBX
PUSH EAX
CALL 0x00156b70
ADD ESP,0x10
CMP ESI,EBX
JZ 0x00156e95
LEA ESI,[ESI]
LEA ESI,[ESI]
SUB ESP,0x8
PUSH 0x0
PUSH EBX
ADD EBX,0x18
CALL 0x001568f0
ADD ESP,0x10
CMP ESI,EBX
JNZ 0x00156e80
ADD ESP,0x4
POP EBX
POP ESI
RET
ADD ESP,0x4
POP EBX
POP ESI
JMP 0x00156b70
(translation_unit "void FUN_00156e40(int param_1,int param_2,undefined1 param_3)\n\n{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}\n\n" (function_definition "void FUN_00156e40(int param_1,int param_2,undefined1 param_3)\n\n{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}" primitive_type (function_declarator "FUN_00156e40(int param_1,int param_2,undefined1 param_3)" identifier (parameter_list "(int param_1,int param_2,undefined1 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined1 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }" if (parenthesized_expression "(0x180 < param_2 - param_1)" ( (binary_expression "0x180 < param_2 - param_1" number_literal < (binary_expression "param_2 - param_1" identifier - identifier)) )) (compound_statement "{\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }" { (expression_statement "iVar1 = param_1 + 0x180;" (assignment_expression "iVar1 = param_1 + 0x180" identifier = (binary_expression "param_1 + 0x180" identifier + number_literal)) ;) (expression_statement "FUN_00156b70(param_1,iVar1,param_3);" (call_expression "FUN_00156b70(param_1,iVar1,param_3)" identifier (argument_list "(param_1,iVar1,param_3)" ( identifier , identifier , identifier ))) ;) (for_statement "for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }" for ( ; (binary_expression "param_2 != iVar1" identifier != identifier) ; (assignment_expression "iVar1 = iVar1 + 0x18" identifier = (binary_expression "iVar1 + 0x18" identifier + number_literal)) ) (compound_statement "{\n      FUN_001568f0(iVar1,0);\n    }" { (expression_statement "FUN_001568f0(iVar1,0);" (call_expression "FUN_001568f0(iVar1,0)" identifier (argument_list "(iVar1,0)" ( identifier , number_literal ))) ;) })) (return_statement "return;" return ;) })) (expression_statement "FUN_00156b70();" (call_expression "FUN_00156b70()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,\n   std::vector<std::__cxx11::basic_string<char> > >,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare> > */\n\nvoid std::\n     __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n               (int __first,int __last,undefined1 param_3)\n\n{\n  int iVar1;\n  \n  if (0x180 < __last - __first) {\n    iVar1 = __first + 0x180;\n    __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,iVar1,param_3);\n    for (; __last != iVar1; iVar1 = iVar1 + 0x18) {\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n                (iVar1,0);\n    }\n    return;\n  }\n  __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n            ();\n  return;\n}\n\n" comment comment (declaration "void std::\n     __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n               (int __first,int __last,undefined1 param_3)\n\n{\n  int iVar1;" primitive_type (ERROR "std::\n     __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>" identifier : : identifier < identifier : : identifier < identifier : : identifier : : identifier < primitive_type >) (pointer_declarator "*,_std::vector<std::__cxx11::basic_string<char>_>_" * (ERROR ",_std::vector<std::__cxx11::basic_string<char>_>" , identifier : : identifier < identifier : : identifier : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n               (int __first,int __last,undefined1 param_3)\n\n{\n  int" identifier : : identifier : : identifier < identifier : : identifier > (function_declarator "_>\n               (int __first,int __last,undefined1 param_3)" identifier (ERROR ">" >) (parameter_list "(int __first,int __last,undefined1 param_3)" ( (parameter_declaration "int __first" primitive_type identifier) , (parameter_declaration "int __last" primitive_type identifier) , (parameter_declaration "undefined1 param_3" type_identifier identifier) ))) { primitive_type) identifier ;) (if_statement "if (0x180 < __last - __first) {\n    iVar1 = __first + 0x180;\n    __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,iVar1,param_3);\n    for (; __last != iVar1; iVar1 = iVar1 + 0x18) {\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n                (iVar1,0);\n    }\n    return;\n  }" if (parenthesized_expression "(0x180 < __last - __first)" ( (binary_expression "0x180 < __last - __first" number_literal < (binary_expression "__last - __first" identifier - identifier)) )) (compound_statement "{\n    iVar1 = __first + 0x180;\n    __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,iVar1,param_3);\n    for (; __last != iVar1; iVar1 = iVar1 + 0x18) {\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n                (iVar1,0);\n    }\n    return;\n  }" { (expression_statement "iVar1 = __first + 0x180;" (assignment_expression "iVar1 = __first + 0x180" identifier = (binary_expression "__first + 0x180" identifier + number_literal)) ;) (ERROR "__insertion_sort<__gnu_cxx::__normal_iterator<std::" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<std" (binary_expression "__insertion_sort<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : :) (labeled_statement "__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,iVar1,param_3);" statement_identifier (ERROR "::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx:" : : (binary_expression "basic_string<char>*,_std" (binary_expression "basic_string<char" identifier < identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char>_>_>,___gnu_cxx" identifier (ERROR "::basic_string<char>_>_>" : : (binary_expression "basic_string<char>_>_" (binary_expression "basic_string<char>_" (binary_expression "basic_string<char" identifier < identifier) > identifier) > identifier) >) , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,iVar1,param_3);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (expression_statement "Odr_violation_compare>_>\n              (__first,iVar1,param_3);" (binary_expression "Odr_violation_compare>_>\n              (__first,iVar1,param_3)" (binary_expression "Odr_violation_compare>_" identifier > identifier) > (parenthesized_expression "(__first,iVar1,param_3)" ( (comma_expression "__first,iVar1,param_3" identifier , (comma_expression "iVar1,param_3" identifier , identifier)) ))) ;))) (for_statement "for (; __last != iVar1; iVar1 = iVar1 + 0x18) {\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n                (iVar1,0);\n    }" for ( ; (binary_expression "__last != iVar1" identifier != identifier) ; (assignment_expression "iVar1 = iVar1 + 0x18" identifier = (binary_expression "iVar1 + 0x18" identifier + number_literal)) ) (compound_statement "{\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n                (iVar1,0);\n    }" { (ERROR "__unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::" (binary_expression "__unguarded_linear_insert<__gnu_cxx::__normal_iterator<std" (binary_expression "__unguarded_linear_insert<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : :) (labeled_statement "__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n                (iVar1,0);" statement_identifier (ERROR "::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx:" : : (binary_expression "basic_string<char>*,_std" (binary_expression "basic_string<char" identifier < identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char>_>_>,___gnu_cxx" identifier (ERROR "::basic_string<char>_>_>" : : (binary_expression "basic_string<char>_>_" (binary_expression "basic_string<char>_" (binary_expression "basic_string<char" identifier < identifier) > identifier) > identifier) >) , identifier) :) : (labeled_statement "__ops::_Val_comp_iter<gold::Odr_violation_compare>_>\n                (iVar1,0);" statement_identifier (ERROR "::_Val_comp_iter<gold:" : : (binary_expression "_Val_comp_iter<gold" identifier < identifier) :) : (expression_statement "Odr_violation_compare>_>\n                (iVar1,0);" (binary_expression "Odr_violation_compare>_>\n                (iVar1,0)" (binary_expression "Odr_violation_compare>_" identifier > identifier) > (parenthesized_expression "(iVar1,0)" ( (comma_expression "iVar1,0" identifier , number_literal) ))) ;))) })) (return_statement "return;" return ;) })) (ERROR "__insertion_sort<__gnu_cxx::__normal_iterator<std::" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<std" (binary_expression "__insertion_sort<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : :) (labeled_statement "__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n            ();" statement_identifier (ERROR "::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx:" : : (binary_expression "basic_string<char>*,_std" (binary_expression "basic_string<char" identifier < identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char>_>_>,___gnu_cxx" identifier (ERROR "::basic_string<char>_>_>" : : (binary_expression "basic_string<char>_>_" (binary_expression "basic_string<char>_" (binary_expression "basic_string<char" identifier < identifier) > identifier) > identifier) >) , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n            ();" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (expression_statement "Odr_violation_compare>_>\n            ();" (binary_expression "Odr_violation_compare>_>\n            ()" (binary_expression "Odr_violation_compare>_" identifier > identifier) > (parenthesized_expression "()" ( identifier ))) ;))) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00156e40(int param_1,int param_2,undefined1 param_3)\n\n{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}\n\n" (function_definition "void FUN_00156e40(int param_1,int param_2,undefined1 param_3)\n\n{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}" primitive_type (function_declarator "FUN_00156e40(int param_1,int param_2,undefined1 param_3)" identifier (parameter_list "(int param_1,int param_2,undefined1 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined1 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }" if (parenthesized_expression "(0x180 < param_2 - param_1)" ( (binary_expression "0x180 < param_2 - param_1" number_literal < (binary_expression "param_2 - param_1" identifier - identifier)) )) (compound_statement "{\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }" { (expression_statement "iVar1 = param_1 + 0x180;" (assignment_expression "iVar1 = param_1 + 0x180" identifier = (binary_expression "param_1 + 0x180" identifier + number_literal)) ;) (expression_statement "FUN_00156b70(param_1,iVar1,param_3);" (call_expression "FUN_00156b70(param_1,iVar1,param_3)" identifier (argument_list "(param_1,iVar1,param_3)" ( identifier , identifier , identifier ))) ;) (for_statement "for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }" for ( ; (binary_expression "param_2 != iVar1" identifier != identifier) ; (assignment_expression "iVar1 = iVar1 + 0x18" identifier = (binary_expression "iVar1 + 0x18" identifier + number_literal)) ) (compound_statement "{\n      FUN_001568f0(iVar1,0);\n    }" { (expression_statement "FUN_001568f0(iVar1,0);" (call_expression "FUN_001568f0(iVar1,0)" identifier (argument_list "(iVar1,0)" ( identifier , number_literal ))) ;) })) (return_statement "return;" return ;) })) (expression_statement "FUN_00156b70();" (call_expression "FUN_00156b70()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (for_statement for ( ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00156e40(int param_1,int param_2,undefined1 param_3)\n\n{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00156e40(int param_1,int param_2,undefined1 param_3)" (identifier "FUN_00156e40") (parameter_list "(int param_1,int param_2,undefined1 param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined1 param_3" (type_identifier "undefined1") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }\n  FUN_00156b70();\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (if_statement "if (0x180 < param_2 - param_1) {\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(0x180 < param_2 - param_1)" (( "(") (binary_expression "0x180 < param_2 - param_1" (number_literal "0x180") (< "<") (binary_expression "param_2 - param_1" (identifier "param_2") (- "-") (identifier "param_1"))) () ")")) (compound_statement "{\n    iVar1 = param_1 + 0x180;\n    FUN_00156b70(param_1,iVar1,param_3);\n    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }\n    return;\n  }" ({ "{") (expression_statement "iVar1 = param_1 + 0x180;" (assignment_expression "iVar1 = param_1 + 0x180" (identifier "iVar1") (= "=") (binary_expression "param_1 + 0x180" (identifier "param_1") (+ "+") (number_literal "0x180"))) (; ";")) (expression_statement "FUN_00156b70(param_1,iVar1,param_3);" (call_expression "FUN_00156b70(param_1,iVar1,param_3)" (identifier "FUN_00156b70") (argument_list "(param_1,iVar1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "iVar1") (, ",") (identifier "param_3") () ")"))) (; ";")) (for_statement "for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {\n      FUN_001568f0(iVar1,0);\n    }" (for "for") (( "(") (; ";") (binary_expression "param_2 != iVar1" (identifier "param_2") (!= "!=") (identifier "iVar1")) (; ";") (assignment_expression "iVar1 = iVar1 + 0x18" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18"))) () ")") (compound_statement "{\n      FUN_001568f0(iVar1,0);\n    }" ({ "{") (expression_statement "FUN_001568f0(iVar1,0);" (call_expression "FUN_001568f0(iVar1,0)" (identifier "FUN_001568f0") (argument_list "(iVar1,0)" (( "(") (identifier "iVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00156b70();" (call_expression "FUN_00156b70()" (identifier "FUN_00156b70") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare> > */

void std::
     __final_insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>var_4>var_4>,___gnu_cxx::__ops::_Iter_comp_iter<gold::var_3>var_4>
               (int var_2,int var_1,undefined1 param_3)

{
  int var_5;
  
  if (0x180 < var_1 - var_2) {
    var_5 = var_2 + 0x180;
    __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>var_4>var_4>,___gnu_cxx::__ops::_Iter_comp_iter<gold::var_3>var_4>
              (var_2,var_5,param_3);
    for (; var_1 != var_5; var_5 = var_5 + 0x18) {
      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>var_4>var_4>,___gnu_cxx::__ops::_Val_comp_iter<gold::var_3>var_4>
                (var_5,0);
    }
    return;
  }
  __insertion_sort<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>var_4>var_4>,___gnu_cxx::__ops::_Iter_comp_iter<gold::var_3>var_4>
            ();
  return;
}


(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)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (for_statement condition: (binary_expression left: (identifier) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))))

void MASKED(int param_1,int param_2,undefined1 param_3)

{
  int iVar1;
  
  if (0x180 < param_2 - param_1) {
    iVar1 = param_1 + 0x180;
    FUN_00156b70(param_1,iVar1,param_3);
    for (; param_2 != iVar1; iVar1 = iVar1 + 0x18) {
      FUN_001568f0(iVar1,0);
    }
    return;
  }
  FUN_00156b70();
  return;
}

