
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<long long
   unsigned int, long long unsigned int>*, std::vector<std::pair<long long unsigned int, long long
   unsigned int>, std::allocator<std::pair<long long unsigned int, long long unsigned int> > > >,
   __gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64> > > */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>*,_std::vector<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64>_>_>
               (uint *__last)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint uVar6;
  uint uVar7;
  
  uVar1 = __last[3];
  uVar2 = *__last;
  uVar3 = __last[1];
  uVar6 = __last[-4];
  uVar7 = __last[-3];
  uVar4 = __last[2];
  puVar5 = __last;
  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {
    do {
      __last = puVar5 + -4;
      *puVar5 = uVar6;
      puVar5[1] = uVar7;
      puVar5[3] = puVar5[-1];
      puVar5[2] = puVar5[-2];
      uVar6 = puVar5[-8];
      uVar7 = puVar5[-7];
      puVar5 = __last;
    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));
  }
  *__last = uVar2;
  __last[1] = uVar3;
  __last[3] = uVar1;
  __last[2] = uVar4;
  return;
}



void FUN_001b5dc0(uint *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint uVar6;
  uint uVar7;
  
  uVar1 = param_1[3];
  uVar2 = *param_1;
  uVar3 = param_1[1];
  uVar6 = param_1[-4];
  uVar7 = param_1[-3];
  uVar4 = param_1[2];
  puVar5 = param_1;
  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {
    do {
      param_1 = puVar5 + -4;
      *puVar5 = uVar6;
      puVar5[1] = uVar7;
      puVar5[3] = puVar5[-1];
      puVar5[2] = puVar5[-2];
      uVar6 = puVar5[-8];
      uVar7 = puVar5[-7];
      puVar5 = param_1;
    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));
  }
  *param_1 = uVar2;
  param_1[1] = uVar3;
  param_1[3] = uVar1;
  param_1[2] = uVar4;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0xc
MOV EBX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [EBX + 0xc]
MOV EDI,dword ptr [EBX]
MOV ESI,dword ptr [EBX + 0x4]
MOV ECX,dword ptr [EBX + -0x10]
MOV dword ptr [ESP + 0x4],EDX
MOV EDX,dword ptr [EBX + -0xc]
MOV EAX,dword ptr [EBX + 0x8]
CMP EDI,ECX
MOV EBP,ESI
SBB EBP,EDX
MOV dword ptr [ESP],EAX
LEA EAX,[EBX + -0x10]
JC 0x001b5df2
JMP 0x001b5e30
MOV EAX,EBX
MOV EBX,dword ptr [EAX + 0xc]
MOV dword ptr [EAX + 0x10],ECX
MOV EBP,ESI
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EAX + 0x14],EDX
MOV dword ptr [EAX + 0x1c],EBX
LEA EBX,[EAX + -0x10]
MOV dword ptr [EAX + 0x18],ECX
MOV ECX,dword ptr [EAX + -0x10]
MOV EDX,dword ptr [EBX + 0x4]
CMP EDI,ECX
SBB EBP,EDX
JC 0x001b5df0
MOV dword ptr [EAX],EDI
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [EAX + 0x4],ESI
MOV ESI,dword ptr [ESP]
MOV dword ptr [EAX + 0xc],EDI
MOV dword ptr [EAX + 0x8],ESI
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EBX
JMP 0x001b5e15
(translation_unit "void FUN_001b5dc0(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}\n\n" (function_definition "void FUN_001b5dc0(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}" primitive_type (function_declarator "FUN_001b5dc0(uint *param_1)" identifier (parameter_list "(uint *param_1)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar3 = param_1[1];" (assignment_expression "uVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_1[-4];" (assignment_expression "uVar6 = param_1[-4]" identifier = (subscript_expression "param_1[-4]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_1[-3];" (assignment_expression "uVar7 = param_1[-3]" identifier = (subscript_expression "param_1[-3]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" identifier = identifier) ;) (if_statement "if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" if (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" ( (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" identifier < identifier) || (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" identifier - identifier) < (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) ))))) )) (compound_statement "{\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" { (do_statement "do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));" do (compound_statement "{\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    }" { (expression_statement "param_1 = puVar5 + -4;" (assignment_expression "param_1 = puVar5 + -4" identifier = (binary_expression "puVar5 + -4" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar6;" (assignment_expression "*puVar5 = uVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5[1] = uVar7;" (assignment_expression "puVar5[1] = uVar7" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = puVar5[-1];" (assignment_expression "puVar5[3] = puVar5[-1]" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (subscript_expression "puVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = puVar5[-2];" (assignment_expression "puVar5[2] = puVar5[-2]" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[-2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar5[-8];" (assignment_expression "uVar6 = puVar5[-8]" identifier = (subscript_expression "puVar5[-8]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar5[-7];" (assignment_expression "uVar7 = puVar5[-7]" identifier = (subscript_expression "puVar5[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" ( (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" identifier < identifier) || (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" identifier - identifier) < (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) ))))) )) ;) })) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = uVar1;" (assignment_expression "param_1[3] = uVar1" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = uVar4;" (assignment_expression "param_1[2] = uVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name: __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<long long\n   unsigned int, long long unsigned int>*, std::vector<std::pair<long long unsigned int, long long\n   unsigned int>, std::allocator<std::pair<long long unsigned int, long long unsigned int> > > >,\n   __gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64> > > */\n\nvoid std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>*,_std::vector<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64>_>_>\n               (uint *__last)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = __last[3];\n  uVar2 = *__last;\n  uVar3 = __last[1];\n  uVar6 = __last[-4];\n  uVar7 = __last[-3];\n  uVar4 = __last[2];\n  puVar5 = __last;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      __last = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = __last;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *__last = uVar2;\n  __last[1] = uVar3;\n  __last[3] = uVar1;\n  __last[2] = uVar4;\n  return;\n}\n\n" comment comment (declaration "void std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>*,_std::vector<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64>_>_>\n               (uint *__last)\n\n{\n  uint uVar1;" primitive_type (ERROR "std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<" identifier : : identifier < identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">*" > *) , (ERROR "_std::vector<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">" >) , (ERROR "_std::allocator<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">_>_>_>" > identifier > identifier > identifier >) , (ERROR "___gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64>_>_>\n               (uint *__last)\n\n{\n  uint" identifier : : identifier : : identifier < identifier : : identifier : : identifier < number_literal > identifier > (function_declarator "_>\n               (uint *__last)" identifier (ERROR ">" >) (parameter_list "(uint *__last)" ( (parameter_declaration "uint *__last" type_identifier (pointer_declarator "*__last" * identifier)) ))) { identifier) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "uVar1 = __last[3];" (assignment_expression "uVar1 = __last[3]" identifier = (subscript_expression "__last[3]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *__last;" (assignment_expression "uVar2 = *__last" identifier = (pointer_expression "*__last" * identifier)) ;) (expression_statement "uVar3 = __last[1];" (assignment_expression "uVar3 = __last[1]" identifier = (subscript_expression "__last[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = __last[-4];" (assignment_expression "uVar6 = __last[-4]" identifier = (subscript_expression "__last[-4]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = __last[-3];" (assignment_expression "uVar7 = __last[-3]" identifier = (subscript_expression "__last[-3]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = __last[2];" (assignment_expression "uVar4 = __last[2]" identifier = (subscript_expression "__last[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = __last;" (assignment_expression "puVar5 = __last" identifier = identifier) ;) (if_statement "if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      __last = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = __last;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" if (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" ( (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" identifier < identifier) || (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" identifier - identifier) < (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) ))))) )) (compound_statement "{\n    do {\n      __last = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = __last;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" { (do_statement "do {\n      __last = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = __last;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));" do (compound_statement "{\n      __last = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = __last;\n    }" { (expression_statement "__last = puVar5 + -4;" (assignment_expression "__last = puVar5 + -4" identifier = (binary_expression "puVar5 + -4" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar6;" (assignment_expression "*puVar5 = uVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5[1] = uVar7;" (assignment_expression "puVar5[1] = uVar7" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = puVar5[-1];" (assignment_expression "puVar5[3] = puVar5[-1]" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (subscript_expression "puVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = puVar5[-2];" (assignment_expression "puVar5[2] = puVar5[-2]" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[-2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar5[-8];" (assignment_expression "uVar6 = puVar5[-8]" identifier = (subscript_expression "puVar5[-8]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar5[-7];" (assignment_expression "uVar7 = puVar5[-7]" identifier = (subscript_expression "puVar5[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = __last;" (assignment_expression "puVar5 = __last" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" ( (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" identifier < identifier) || (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" identifier - identifier) < (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) ))))) )) ;) })) (expression_statement "*__last = uVar2;" (assignment_expression "*__last = uVar2" (pointer_expression "*__last" * identifier) = identifier) ;) (expression_statement "__last[1] = uVar3;" (assignment_expression "__last[1] = uVar3" (subscript_expression "__last[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__last[3] = uVar1;" (assignment_expression "__last[3] = uVar1" (subscript_expression "__last[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__last[2] = uVar4;" (assignment_expression "__last[2] = uVar4" (subscript_expression "__last[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_001b5dc0(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}\n\n" (function_definition "void FUN_001b5dc0(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}" primitive_type (function_declarator "FUN_001b5dc0(uint *param_1)" identifier (parameter_list "(uint *param_1)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar3 = param_1[1];" (assignment_expression "uVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_1[-4];" (assignment_expression "uVar6 = param_1[-4]" identifier = (subscript_expression "param_1[-4]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_1[-3];" (assignment_expression "uVar7 = param_1[-3]" identifier = (subscript_expression "param_1[-3]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" identifier = identifier) ;) (if_statement "if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" if (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" ( (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" identifier < identifier) || (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" identifier - identifier) < (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) ))))) )) (compound_statement "{\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" { (do_statement "do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));" do (compound_statement "{\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    }" { (expression_statement "param_1 = puVar5 + -4;" (assignment_expression "param_1 = puVar5 + -4" identifier = (binary_expression "puVar5 + -4" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar6;" (assignment_expression "*puVar5 = uVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5[1] = uVar7;" (assignment_expression "puVar5[1] = uVar7" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = puVar5[-1];" (assignment_expression "puVar5[3] = puVar5[-1]" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (subscript_expression "puVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = puVar5[-2];" (assignment_expression "puVar5[2] = puVar5[-2]" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[-2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar5[-8];" (assignment_expression "uVar6 = puVar5[-8]" identifier = (subscript_expression "puVar5[-8]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar5[-7];" (assignment_expression "uVar7 = puVar5[-7]" identifier = (subscript_expression "puVar5[-7]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" ( (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" identifier < identifier) || (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" identifier - identifier) < (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < uVar6)" ( (binary_expression "uVar2 < uVar6" identifier < identifier) ))))) )) ;) })) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = uVar1;" (assignment_expression "param_1[3] = uVar1" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = uVar4;" (assignment_expression "param_1[2] = uVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_001b5dc0(uint *param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001b5dc0(uint *param_1)" (identifier "FUN_001b5dc0") (parameter_list "(uint *param_1)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint uVar7;\n  \n  uVar1 = param_1[3];\n  uVar2 = *param_1;\n  uVar3 = param_1[1];\n  uVar6 = param_1[-4];\n  uVar7 = param_1[-3];\n  uVar4 = param_1[2];\n  puVar5 = param_1;\n  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }\n  *param_1 = uVar2;\n  param_1[1] = uVar3;\n  param_1[3] = uVar1;\n  param_1[2] = uVar4;\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (expression_statement "uVar1 = param_1[3];" (assignment_expression "uVar1 = param_1[3]" (identifier "uVar1") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" (identifier "uVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar3 = param_1[1];" (assignment_expression "uVar3 = param_1[1]" (identifier "uVar3") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = param_1[-4];" (assignment_expression "uVar6 = param_1[-4]" (identifier "uVar6") (= "=") (subscript_expression "param_1[-4]" (identifier "param_1") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "uVar7 = param_1[-3];" (assignment_expression "uVar7 = param_1[-3]" (identifier "uVar7") (= "=") (subscript_expression "param_1[-3]" (identifier "param_1") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[2];" (assignment_expression "uVar4 = param_1[2]" (identifier "uVar4") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" (identifier "puVar5") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" (if "if") (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" (( "(") (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" (identifier "uVar3") (< "<") (identifier "uVar7")) (|| "||") (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" (identifier "uVar3") (- "-") (identifier "uVar7")) (< "<") (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 < uVar6)" (( "(") (binary_expression "uVar2 < uVar6" (identifier "uVar2") (< "<") (identifier "uVar6")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));\n  }" ({ "{") (do_statement "do {\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));" (do "do") (compound_statement "{\n      param_1 = puVar5 + -4;\n      *puVar5 = uVar6;\n      puVar5[1] = uVar7;\n      puVar5[3] = puVar5[-1];\n      puVar5[2] = puVar5[-2];\n      uVar6 = puVar5[-8];\n      uVar7 = puVar5[-7];\n      puVar5 = param_1;\n    }" ({ "{") (expression_statement "param_1 = puVar5 + -4;" (assignment_expression "param_1 = puVar5 + -4" (identifier "param_1") (= "=") (binary_expression "puVar5 + -4" (identifier "puVar5") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "*puVar5 = uVar6;" (assignment_expression "*puVar5 = uVar6" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar5[1] = uVar7;" (assignment_expression "puVar5[1] = uVar7" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar5[3] = puVar5[-1];" (assignment_expression "puVar5[3] = puVar5[-1]" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar5[-1]" (identifier "puVar5") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar5[2] = puVar5[-2];" (assignment_expression "puVar5[2] = puVar5[-2]" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar5[-2]" (identifier "puVar5") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar5[-8];" (assignment_expression "uVar6 = puVar5[-8]" (identifier "uVar6") (= "=") (subscript_expression "puVar5[-8]" (identifier "puVar5") ([ "[") (number_literal "-8") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar5[-7];" (assignment_expression "uVar7 = puVar5[-7]" (identifier "uVar7") (= "=") (subscript_expression "puVar5[-7]" (identifier "puVar5") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" (identifier "puVar5") (= "=") (identifier "param_1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6))" (( "(") (binary_expression "uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 < uVar7" (identifier "uVar3") (< "<") (identifier "uVar7")) (|| "||") (binary_expression "uVar3 - uVar7 < (uint)(uVar2 < uVar6)" (binary_expression "uVar3 - uVar7" (identifier "uVar3") (- "-") (identifier "uVar7")) (< "<") (call_expression "(uint)(uVar2 < uVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 < uVar6)" (( "(") (binary_expression "uVar2 < uVar6" (identifier "uVar2") (< "<") (identifier "uVar6")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_1[3] = uVar1;" (assignment_expression "param_1[3] = uVar1" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_1[2] = uVar4;" (assignment_expression "param_1[2] = uVar4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<long long
   unsigned int, long long unsigned int>*, std::vector<std::pair<long long unsigned int, long long
   unsigned int>, std::allocator<std::pair<long long unsigned int, long long unsigned int> > > >,
   __gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64> > > */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>*,_std::vector<std::pair<long_long_unsigned_int,_long_long_unsigned_int>,_std::allocator<std::pair<long_long_unsigned_int,_long_long_unsigned_int>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<64>_>_>
               (type_1 *__last)

{
  type_1 uVar1;
  type_1 var_3;
  type_1 var_1;
  type_1 uVar4;
  type_1 *var_5;
  type_1 var_4;
  type_1 var_2;
  
  uVar1 = __last[3];
  var_3 = *__last;
  var_1 = __last[1];
  var_4 = __last[-4];
  var_2 = __last[-3];
  uVar4 = __last[2];
  var_5 = __last;
  if (var_1 < var_2 || var_1 - var_2 < (type_1)(var_3 < var_4)) {
    do {
      __last = var_5 + -4;
      *var_5 = var_4;
      var_5[1] = var_2;
      var_5[3] = var_5[-1];
      var_5[2] = var_5[-2];
      var_4 = var_5[-8];
      var_2 = var_5[-7];
      var_5 = __last;
    } while (var_1 < var_2 || var_1 - var_2 < (type_1)(var_3 < var_4));
  }
  *__last = var_3;
  __last[1] = var_1;
  __last[3] = uVar1;
  __last[2] = uVar4;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))))

void MASKED(uint *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint uVar6;
  uint uVar7;
  
  uVar1 = param_1[3];
  uVar2 = *param_1;
  uVar3 = param_1[1];
  uVar6 = param_1[-4];
  uVar7 = param_1[-3];
  uVar4 = param_1[2];
  puVar5 = param_1;
  if (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6)) {
    do {
      param_1 = puVar5 + -4;
      *puVar5 = uVar6;
      puVar5[1] = uVar7;
      puVar5[3] = puVar5[-1];
      puVar5[2] = puVar5[-2];
      uVar6 = puVar5[-8];
      uVar7 = puVar5[-7];
      puVar5 = param_1;
    } while (uVar3 < uVar7 || uVar3 - uVar7 < (uint)(uVar2 < uVar6));
  }
  *param_1 = uVar2;
  param_1[1] = uVar3;
  param_1[3] = uVar1;
  param_1[2] = uVar4;
  return;
}

