
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Offset_to_lineno_entry*,
   std::vector<gold::Offset_to_lineno_entry> >, __gnu_cxx::__ops::_Val_less_iter> */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Offset_to_lineno_entry*,_std::vector<gold::Offset_to_lineno_entry>_>,___gnu_cxx::__ops::_Val_less_iter>
               (long *__last)

{
  byte bVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  long *plVar7;
  
  lVar5 = *__last;
  lVar6 = __last[1];
  lVar2 = __last[2];
  bVar1 = *(byte *)((long)__last + 0xf);
  lVar3 = *__last;
  plVar7 = __last + -3;
  do {
    lVar4 = *plVar7;
    if (lVar4 != lVar3) {
      if (lVar4 == lVar3 || lVar4 < lVar3) {
LAB_0047193d:
        plVar7[3] = lVar5;
        plVar7[4] = lVar6;
        plVar7[5] = lVar2;
        return;
      }
    }
    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;
    plVar7[3] = *plVar7;
    plVar7[4] = plVar7[1];
    plVar7[5] = plVar7[2];
    plVar7 = plVar7 + -3;
  } while( true );
}



void FUN_004718e0(long *param_1)

{
  byte bVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  long *plVar7;
  
  lVar5 = *param_1;
  lVar6 = param_1[1];
  lVar2 = param_1[2];
  bVar1 = *(byte *)((long)param_1 + 0xf);
  lVar3 = *param_1;
  plVar7 = param_1 + -3;
  do {
    lVar4 = *plVar7;
    if (lVar4 != lVar3) {
      if (lVar4 == lVar3 || lVar4 < lVar3) {
LAB_0047193d:
        plVar7[3] = lVar5;
        plVar7[4] = lVar6;
        plVar7[5] = lVar2;
        return;
      }
    }
    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;
    plVar7[3] = *plVar7;
    plVar7[4] = plVar7[1];
    plVar7[5] = plVar7[2];
    plVar7 = plVar7 + -3;
  } while( true );
}


MOVDQU XMM1,xmmword ptr [RDI]
MOV RAX,qword ptr [RDI + 0x10]
SUB RDI,0x18
MOVZX ESI,byte ptr [RDI + 0x27]
MOV RCX,qword ptr [RDI + 0x18]
MOVAPS xmmword ptr [RSP + -0x28],XMM1
MOV qword ptr [RSP + -0x18],RAX
SHR SIL,0x7
JMP 0x00471923
SETG AL
TEST AL,AL
JZ 0x0047193d
MOVDQU XMM0,xmmword ptr [RDI]
MOV RAX,qword ptr [RDI + 0x10]
SUB RDI,0x18
MOVUPS xmmword ptr [RDI + 0x30],XMM0
MOV qword ptr [RDI + 0x40],RAX
LEA RDX,[RDI + 0x18]
CMP qword ptr [RDI],RCX
JNZ 0x00471908
MOVZX EAX,byte ptr [RDI + 0xf]
SHR AL,0x7
CMP SIL,AL
SETA AL
TEST AL,AL
JNZ 0x0047190f
MOVDQA XMM2,xmmword ptr [RSP + -0x28]
MOV RAX,qword ptr [RSP + -0x18]
MOVUPS xmmword ptr [RDX],XMM2
MOV qword ptr [RDX + 0x10],RAX
RET
(translation_unit "void FUN_004718e0(long *param_1)\n\n{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}\n\n" (function_definition "void FUN_004718e0(long *param_1)\n\n{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_004718e0(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (expression_statement "lVar5 = *param_1;" (assignment_expression "lVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar6 = param_1[1];" (assignment_expression "lVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = param_1[2];" (assignment_expression "lVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "bVar1 = *(byte *)((long)param_1 + 0xf);" (assignment_expression "bVar1 = *(byte *)((long)param_1 + 0xf)" identifier = (pointer_expression "*(byte *)((long)param_1 + 0xf)" * (cast_expression "(byte *)((long)param_1 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0xf)" ( (binary_expression "(long)param_1 + 0xf" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar3 = *param_1;" (assignment_expression "lVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "plVar7 = param_1 + -3;" (assignment_expression "plVar7 = param_1 + -3" identifier = (binary_expression "param_1 + -3" identifier + number_literal)) ;) (do_statement "do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );" do (compound_statement "{\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  }" { (expression_statement "lVar4 = *plVar7;" (assignment_expression "lVar4 = *plVar7" identifier = (pointer_expression "*plVar7" * identifier)) ;) (if_statement "if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" if (parenthesized_expression "(lVar4 != lVar3)" ( (binary_expression "lVar4 != lVar3" identifier != identifier) )) (compound_statement "{\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }" { (if_statement "if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" if (parenthesized_expression "(lVar4 == lVar3 || lVar4 < lVar3)" ( (binary_expression "lVar4 == lVar3 || lVar4 < lVar3" (binary_expression "lVar4 == lVar3" identifier == identifier) || (binary_expression "lVar4 < lVar3" identifier < identifier)) )) (compound_statement "{\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" { (labeled_statement "LAB_0047193d:\n        plVar7[3] = lVar5;" statement_identifier : (expression_statement "plVar7[3] = lVar5;" (assignment_expression "plVar7[3] = lVar5" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "plVar7[4] = lVar6;" (assignment_expression "plVar7[4] = lVar6" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar7[5] = lVar2;" (assignment_expression "plVar7[5] = lVar2" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" else (if_statement "if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" if (parenthesized_expression "(bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7)" ( (binary_expression "bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7" (binary_expression "bVar1 >> 7" identifier >> number_literal) <= (binary_expression "*(byte *)((long)plVar7 + 0xf) >> 7" (pointer_expression "*(byte *)((long)plVar7 + 0xf)" * (cast_expression "(byte *)((long)plVar7 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0xf)" ( (binary_expression "(long)plVar7 + 0xf" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal)) )) (goto_statement "goto LAB_0047193d;" goto statement_identifier ;)))) (expression_statement "plVar7[3] = *plVar7;" (assignment_expression "plVar7[3] = *plVar7" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = (pointer_expression "*plVar7" * identifier)) ;) (expression_statement "plVar7[4] = plVar7[1];" (assignment_expression "plVar7[4] = plVar7[1]" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = (subscript_expression "plVar7[1]" identifier [ number_literal ])) ;) (expression_statement "plVar7[5] = plVar7[2];" (assignment_expression "plVar7[5] = plVar7[2]" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = (subscript_expression "plVar7[2]" identifier [ number_literal ])) ;) (expression_statement "plVar7 = plVar7 + -3;" (assignment_expression "plVar7 = plVar7 + -3" identifier = (binary_expression "plVar7 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Offset_to_lineno_entry*,\n   std::vector<gold::Offset_to_lineno_entry> >, __gnu_cxx::__ops::_Val_less_iter> */\n\nvoid std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Offset_to_lineno_entry*,_std::vector<gold::Offset_to_lineno_entry>_>,___gnu_cxx::__ops::_Val_less_iter>\n               (long *__last)\n\n{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *__last;\n  lVar6 = __last[1];\n  lVar2 = __last[2];\n  bVar1 = *(byte *)((long)__last + 0xf);\n  lVar3 = *__last;\n  plVar7 = __last + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}\n\n" comment comment (declaration "void std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Offset_to_lineno_entry*,_std::vector<gold::Offset_to_lineno_entry>_>,___gnu_cxx::__ops::_Val_less_iter>\n               (long *__last)\n\n{\n  byte bVar1;" primitive_type (ERROR "std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::" identifier : : identifier < identifier : : identifier < identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::Offset_to_lineno_entry>" identifier : : identifier < identifier : : identifier >) identifier (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Val_less_iter>\n               (long *__last)\n\n{\n  byte" identifier : : identifier : : (function_declarator "_Val_less_iter>\n               (long *__last)" identifier (ERROR ">" >) (parameter_list "(long *__last)" ( (parameter_declaration "long *__last" (sized_type_specifier "long" long) (pointer_declarator "*__last" * identifier)) ))) { identifier) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (expression_statement "lVar5 = *__last;" (assignment_expression "lVar5 = *__last" identifier = (pointer_expression "*__last" * identifier)) ;) (expression_statement "lVar6 = __last[1];" (assignment_expression "lVar6 = __last[1]" identifier = (subscript_expression "__last[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = __last[2];" (assignment_expression "lVar2 = __last[2]" identifier = (subscript_expression "__last[2]" identifier [ number_literal ])) ;) (expression_statement "bVar1 = *(byte *)((long)__last + 0xf);" (assignment_expression "bVar1 = *(byte *)((long)__last + 0xf)" identifier = (pointer_expression "*(byte *)((long)__last + 0xf)" * (cast_expression "(byte *)((long)__last + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__last + 0xf)" ( (binary_expression "(long)__last + 0xf" (cast_expression "(long)__last" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar3 = *__last;" (assignment_expression "lVar3 = *__last" identifier = (pointer_expression "*__last" * identifier)) ;) (expression_statement "plVar7 = __last + -3;" (assignment_expression "plVar7 = __last + -3" identifier = (binary_expression "__last + -3" identifier + number_literal)) ;) (do_statement "do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );" do (compound_statement "{\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  }" { (expression_statement "lVar4 = *plVar7;" (assignment_expression "lVar4 = *plVar7" identifier = (pointer_expression "*plVar7" * identifier)) ;) (if_statement "if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" if (parenthesized_expression "(lVar4 != lVar3)" ( (binary_expression "lVar4 != lVar3" identifier != identifier) )) (compound_statement "{\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }" { (if_statement "if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" if (parenthesized_expression "(lVar4 == lVar3 || lVar4 < lVar3)" ( (binary_expression "lVar4 == lVar3 || lVar4 < lVar3" (binary_expression "lVar4 == lVar3" identifier == identifier) || (binary_expression "lVar4 < lVar3" identifier < identifier)) )) (compound_statement "{\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" { (labeled_statement "LAB_0047193d:\n        plVar7[3] = lVar5;" statement_identifier : (expression_statement "plVar7[3] = lVar5;" (assignment_expression "plVar7[3] = lVar5" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "plVar7[4] = lVar6;" (assignment_expression "plVar7[4] = lVar6" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar7[5] = lVar2;" (assignment_expression "plVar7[5] = lVar2" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" else (if_statement "if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" if (parenthesized_expression "(bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7)" ( (binary_expression "bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7" (binary_expression "bVar1 >> 7" identifier >> number_literal) <= (binary_expression "*(byte *)((long)plVar7 + 0xf) >> 7" (pointer_expression "*(byte *)((long)plVar7 + 0xf)" * (cast_expression "(byte *)((long)plVar7 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0xf)" ( (binary_expression "(long)plVar7 + 0xf" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal)) )) (goto_statement "goto LAB_0047193d;" goto statement_identifier ;)))) (expression_statement "plVar7[3] = *plVar7;" (assignment_expression "plVar7[3] = *plVar7" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = (pointer_expression "*plVar7" * identifier)) ;) (expression_statement "plVar7[4] = plVar7[1];" (assignment_expression "plVar7[4] = plVar7[1]" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = (subscript_expression "plVar7[1]" identifier [ number_literal ])) ;) (expression_statement "plVar7[5] = plVar7[2];" (assignment_expression "plVar7[5] = plVar7[2]" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = (subscript_expression "plVar7[2]" identifier [ number_literal ])) ;) (expression_statement "plVar7 = plVar7 + -3;" (assignment_expression "plVar7 = plVar7 + -3" identifier = (binary_expression "plVar7 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit "void FUN_004718e0(long *param_1)\n\n{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}\n\n" (function_definition "void FUN_004718e0(long *param_1)\n\n{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}" primitive_type (function_declarator "FUN_004718e0(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (expression_statement "lVar5 = *param_1;" (assignment_expression "lVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar6 = param_1[1];" (assignment_expression "lVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = param_1[2];" (assignment_expression "lVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "bVar1 = *(byte *)((long)param_1 + 0xf);" (assignment_expression "bVar1 = *(byte *)((long)param_1 + 0xf)" identifier = (pointer_expression "*(byte *)((long)param_1 + 0xf)" * (cast_expression "(byte *)((long)param_1 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0xf)" ( (binary_expression "(long)param_1 + 0xf" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "lVar3 = *param_1;" (assignment_expression "lVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "plVar7 = param_1 + -3;" (assignment_expression "plVar7 = param_1 + -3" identifier = (binary_expression "param_1 + -3" identifier + number_literal)) ;) (do_statement "do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );" do (compound_statement "{\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  }" { (expression_statement "lVar4 = *plVar7;" (assignment_expression "lVar4 = *plVar7" identifier = (pointer_expression "*plVar7" * identifier)) ;) (if_statement "if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" if (parenthesized_expression "(lVar4 != lVar3)" ( (binary_expression "lVar4 != lVar3" identifier != identifier) )) (compound_statement "{\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }" { (if_statement "if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" if (parenthesized_expression "(lVar4 == lVar3 || lVar4 < lVar3)" ( (binary_expression "lVar4 == lVar3 || lVar4 < lVar3" (binary_expression "lVar4 == lVar3" identifier == identifier) || (binary_expression "lVar4 < lVar3" identifier < identifier)) )) (compound_statement "{\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" { (labeled_statement "LAB_0047193d:\n        plVar7[3] = lVar5;" statement_identifier : (expression_statement "plVar7[3] = lVar5;" (assignment_expression "plVar7[3] = lVar5" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "plVar7[4] = lVar6;" (assignment_expression "plVar7[4] = lVar6" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar7[5] = lVar2;" (assignment_expression "plVar7[5] = lVar2" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) }) (else_clause "else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" else (if_statement "if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" if (parenthesized_expression "(bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7)" ( (binary_expression "bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7" (binary_expression "bVar1 >> 7" identifier >> number_literal) <= (binary_expression "*(byte *)((long)plVar7 + 0xf) >> 7" (pointer_expression "*(byte *)((long)plVar7 + 0xf)" * (cast_expression "(byte *)((long)plVar7 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0xf)" ( (binary_expression "(long)plVar7 + 0xf" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal)) )) (goto_statement "goto LAB_0047193d;" goto statement_identifier ;)))) (expression_statement "plVar7[3] = *plVar7;" (assignment_expression "plVar7[3] = *plVar7" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = (pointer_expression "*plVar7" * identifier)) ;) (expression_statement "plVar7[4] = plVar7[1];" (assignment_expression "plVar7[4] = plVar7[1]" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = (subscript_expression "plVar7[1]" identifier [ number_literal ])) ;) (expression_statement "plVar7[5] = plVar7[2];" (assignment_expression "plVar7[5] = plVar7[2]" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = (subscript_expression "plVar7[2]" identifier [ number_literal ])) ;) (expression_statement "plVar7 = plVar7 + -3;" (assignment_expression "plVar7 = plVar7 + -3" identifier = (binary_expression "plVar7 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) || (binary_expression IDENT < IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (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 ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) <= (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) >> LIT)) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * 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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_004718e0(long *param_1)\n\n{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_004718e0(long *param_1)" (identifier "FUN_004718e0") (parameter_list "(long *param_1)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  \n  lVar5 = *param_1;\n  lVar6 = param_1[1];\n  lVar2 = param_1[2];\n  bVar1 = *(byte *)((long)param_1 + 0xf);\n  lVar3 = *param_1;\n  plVar7 = param_1 + -3;\n  do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (expression_statement "lVar5 = *param_1;" (assignment_expression "lVar5 = *param_1" (identifier "lVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "lVar6 = param_1[1];" (assignment_expression "lVar6 = param_1[1]" (identifier "lVar6") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar2 = param_1[2];" (assignment_expression "lVar2 = param_1[2]" (identifier "lVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "bVar1 = *(byte *)((long)param_1 + 0xf);" (assignment_expression "bVar1 = *(byte *)((long)param_1 + 0xf)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)param_1 + 0xf)" (* "*") (cast_expression "(byte *)((long)param_1 + 0xf)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0xf)" (( "(") (binary_expression "(long)param_1 + 0xf" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0xf")) () ")"))))) (; ";")) (expression_statement "lVar3 = *param_1;" (assignment_expression "lVar3 = *param_1" (identifier "lVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "plVar7 = param_1 + -3;" (assignment_expression "plVar7 = param_1 + -3" (identifier "plVar7") (= "=") (binary_expression "param_1 + -3" (identifier "param_1") (+ "+") (number_literal "-3"))) (; ";")) (do_statement "do {\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  } while( true );" (do "do") (compound_statement "{\n    lVar4 = *plVar7;\n    if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;\n    plVar7[3] = *plVar7;\n    plVar7[4] = plVar7[1];\n    plVar7[5] = plVar7[2];\n    plVar7 = plVar7 + -3;\n  }" ({ "{") (expression_statement "lVar4 = *plVar7;" (assignment_expression "lVar4 = *plVar7" (identifier "lVar4") (= "=") (pointer_expression "*plVar7" (* "*") (identifier "plVar7"))) (; ";")) (if_statement "if (lVar4 != lVar3) {\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }\n    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" (if "if") (parenthesized_expression "(lVar4 != lVar3)" (( "(") (binary_expression "lVar4 != lVar3" (identifier "lVar4") (!= "!=") (identifier "lVar3")) () ")")) (compound_statement "{\n      if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }\n    }" ({ "{") (if_statement "if (lVar4 == lVar3 || lVar4 < lVar3) {\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" (if "if") (parenthesized_expression "(lVar4 == lVar3 || lVar4 < lVar3)" (( "(") (binary_expression "lVar4 == lVar3 || lVar4 < lVar3" (binary_expression "lVar4 == lVar3" (identifier "lVar4") (== "==") (identifier "lVar3")) (|| "||") (binary_expression "lVar4 < lVar3" (identifier "lVar4") (< "<") (identifier "lVar3"))) () ")")) (compound_statement "{\nLAB_0047193d:\n        plVar7[3] = lVar5;\n        plVar7[4] = lVar6;\n        plVar7[5] = lVar2;\n        return;\n      }" ({ "{") (labeled_statement "LAB_0047193d:\n        plVar7[3] = lVar5;" (statement_identifier "LAB_0047193d") (: ":") (expression_statement "plVar7[3] = lVar5;" (assignment_expression "plVar7[3] = lVar5" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "lVar5")) (; ";"))) (expression_statement "plVar7[4] = lVar6;" (assignment_expression "plVar7[4] = lVar6" (subscript_expression "plVar7[4]" (identifier "plVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "plVar7[5] = lVar2;" (assignment_expression "plVar7[5] = lVar2" (subscript_expression "plVar7[5]" (identifier "plVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" (else "else") (if_statement "if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;" (if "if") (parenthesized_expression "(bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7)" (( "(") (binary_expression "bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7" (binary_expression "bVar1 >> 7" (identifier "bVar1") (>> ">>") (number_literal "7")) (<= "<=") (binary_expression "*(byte *)((long)plVar7 + 0xf) >> 7" (pointer_expression "*(byte *)((long)plVar7 + 0xf)" (* "*") (cast_expression "(byte *)((long)plVar7 + 0xf)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar7 + 0xf)" (( "(") (binary_expression "(long)plVar7 + 0xf" (cast_expression "(long)plVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar7")) (+ "+") (number_literal "0xf")) () ")")))) (>> ">>") (number_literal "7"))) () ")")) (goto_statement "goto LAB_0047193d;" (goto "goto") (statement_identifier "LAB_0047193d") (; ";"))))) (expression_statement "plVar7[3] = *plVar7;" (assignment_expression "plVar7[3] = *plVar7" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*plVar7" (* "*") (identifier "plVar7"))) (; ";")) (expression_statement "plVar7[4] = plVar7[1];" (assignment_expression "plVar7[4] = plVar7[1]" (subscript_expression "plVar7[4]" (identifier "plVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar7[5] = plVar7[2];" (assignment_expression "plVar7[5] = plVar7[2]" (subscript_expression "plVar7[5]" (identifier "plVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "plVar7 = plVar7 + -3;" (assignment_expression "plVar7 = plVar7 + -3" (identifier "plVar7") (= "=") (binary_expression "plVar7 + -3" (identifier "plVar7") (+ "+") (number_literal "-3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Offset_to_lineno_entry*,
   std::vector<gold::Offset_to_lineno_entry> >, __gnu_cxx::__ops::_Val_less_iter> */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Offset_to_lineno_entry*,_std::vector<gold::Offset_to_lineno_entry>_>,___gnu_cxx::__ops::_Val_less_iter>
               (long *var_1)

{
  type_1 var_4;
  long lVar2;
  long var_3;
  long var_2;
  long lVar5;
  long lVar6;
  long *var_5;
  
  lVar5 = *var_1;
  lVar6 = var_1[1];
  lVar2 = var_1[2];
  var_4 = *(type_1 *)((long)var_1 + 0xf);
  var_3 = *var_1;
  var_5 = var_1 + -3;
  do {
    var_2 = *var_5;
    if (var_2 != var_3) {
      if (var_2 == var_3 || var_2 < var_3) {
LAB_0047193d:
        var_5[3] = lVar5;
        var_5[4] = lVar6;
        var_5[5] = lVar2;
        return;
      }
    }
    else if (var_4 >> 7 <= *(type_1 *)((long)var_5 + 0xf) >> 7) goto LAB_0047193d;
    var_5[3] = *var_5;
    var_5[4] = var_5[1];
    var_5[5] = var_5[2];
    var_5 = var_5 + -3;
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (labeled_statement label: (statement_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)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (true))))))

void MASKED(long *param_1)

{
  byte bVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  long *plVar7;
  
  lVar5 = *param_1;
  lVar6 = param_1[1];
  lVar2 = param_1[2];
  bVar1 = *(byte *)((long)param_1 + 0xf);
  lVar3 = *param_1;
  plVar7 = param_1 + -3;
  do {
    lVar4 = *plVar7;
    if (lVar4 != lVar3) {
      if (lVar4 == lVar3 || lVar4 < lVar3) {
LAB_0047193d:
        plVar7[3] = lVar5;
        plVar7[4] = lVar6;
        plVar7[5] = lVar2;
        return;
      }
    }
    else if (bVar1 >> 7 <= *(byte *)((long)plVar7 + 0xf) >> 7) goto LAB_0047193d;
    plVar7[3] = *plVar7;
    plVar7[4] = plVar7[1];
    plVar7[5] = plVar7[2];
    plVar7 = plVar7 + -3;
  } while( true );
}

