
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,
   true, 64, true>*, std::vector<gold::Output_reloc<4, true, 64, true>,
   std::allocator<gold::Output_reloc<4, true, 64, true> > > >,
   __gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4, true, 64,
   true>::Sort_relocs_comparison> > */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>
               (anon_union_8_4_c82d8563_for_u1_ *__last)

{
  int iVar1;
  anon_union_8_4_c82d8563_for_u1_ *r2;
  value_type __val;
  
  __val.rel_.u1_ = *__last;
  __val.rel_.u2_ = *(anon_union_8_2_238bdeaa_for_u2_ *)(__last + 1);
  __val.rel_.address_ = *(Address *)(__last + 2);
  __val.rel_._24_8_ = __last[3];
  __val.rel_._32_8_ = __last[4];
  __val.addend_ = *(Addend *)(__last + 5);
  r2 = __last + -6;
  while( true ) {
    iVar1 = gold::Output_reloc<9,_true,_64,_true>::compare
                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2);
    if ((-1 < iVar1) && ((iVar1 != 0 || (r2[5].relobj <= __val.addend_)))) break;
    r2[6] = *r2;
    r2[7] = r2[1];
    r2[8] = r2[2];
    r2[9] = r2[3];
    r2[10] = r2[4];
    r2[0xb] = r2[5];
    r2 = r2 + -6;
  }
  r2[6] = __val.rel_.u1_;
  r2[7] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.u2_;
  r2[8] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.address_;
  r2[9] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._24_8_;
  r2[10] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._32_8_;
  r2[0xb] = (anon_union_8_4_c82d8563_for_u1_)__val.addend_;
  return;
}



void FUN_00245fa0(undefined8 *param_1)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined8 local_38;
  undefined8 uStack_30;
  undefined8 local_28;
  ulong uStack_20;
  
  local_48 = *param_1;
  uStack_40 = param_1[1];
  local_38 = param_1[2];
  uStack_30 = param_1[3];
  local_28 = param_1[4];
  uStack_20 = param_1[5];
  puVar2 = param_1 + -6;
  while( true ) {
    iVar1 = FUN_0023f8e0(&local_48,puVar2);
    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;
    puVar2[6] = *puVar2;
    puVar2[7] = puVar2[1];
    puVar2[8] = puVar2[2];
    puVar2[9] = puVar2[3];
    puVar2[10] = puVar2[4];
    puVar2[0xb] = puVar2[5];
    puVar2 = puVar2 + -6;
  }
  puVar2[6] = local_48;
  puVar2[7] = uStack_40;
  puVar2[8] = local_38;
  puVar2[9] = uStack_30;
  puVar2[10] = local_28;
  puVar2[0xb] = uStack_20;
  return;
}


PUSH R12
PUSH RBP
PUSH RBX
LEA RBX,[RDI + -0x30]
SUB RSP,0x30
MOVDQU XMM3,xmmword ptr [RDI]
MOVDQU XMM4,xmmword ptr [RDI + 0x10]
MOVDQU XMM5,xmmword ptr [RDI + 0x20]
MOV R12,RSP
MOVAPS xmmword ptr [RSP],XMM3
MOVAPS xmmword ptr [RSP + 0x10],XMM4
MOVAPS xmmword ptr [RSP + 0x20],XMM5
MOV RSI,RBX
MOV RDI,R12
LEA RBP,[RBX + 0x30]
CALL 0x0023f8e0
TEST EAX,EAX
JS 0x0024601b
JZ 0x00246010
MOVDQA XMM6,xmmword ptr [RSP]
MOVDQA XMM7,xmmword ptr [RSP + 0x10]
MOVDQA XMM3,xmmword ptr [RSP + 0x20]
MOVUPS xmmword ptr [RBP],XMM6
MOVUPS xmmword ptr [RBP + 0x10],XMM7
MOVUPS xmmword ptr [RBP + 0x20],XMM3
ADD RSP,0x30
POP RBX
POP RBP
POP R12
RET
MOV RAX,qword ptr [RBX + 0x28]
CMP qword ptr [RSP + 0x28],RAX
JNC 0x00245fe0
MOVDQU XMM0,xmmword ptr [RBX]
MOVDQU XMM1,xmmword ptr [RBX + 0x10]
SUB RBX,0x30
MOVDQU XMM2,xmmword ptr [RBX + 0x50]
MOVUPS xmmword ptr [RBX + 0x60],XMM0
MOVUPS xmmword ptr [RBX + 0x70],XMM1
MOVUPS xmmword ptr [RBX + 0x80],XMM2
JMP 0x00245fcb
(translation_unit "void FUN_00245fa0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}\n\n" (function_definition "void FUN_00245fa0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}" primitive_type (function_declarator "FUN_00245fa0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 uStack_40;" type_identifier identifier ;) (declaration "undefined8 local_38;" type_identifier identifier ;) (declaration "undefined8 uStack_30;" type_identifier identifier ;) (declaration "undefined8 local_28;" type_identifier identifier ;) (declaration "ulong uStack_20;" type_identifier identifier ;) (expression_statement "local_48 = *param_1;" (assignment_expression "local_48 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uStack_40 = param_1[1];" (assignment_expression "uStack_40 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_38 = param_1[2];" (assignment_expression "local_38 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uStack_30 = param_1[3];" (assignment_expression "uStack_30 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_1[4];" (assignment_expression "local_28 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uStack_20 = param_1[5];" (assignment_expression "uStack_20 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = param_1 + -6;" (assignment_expression "puVar2 = param_1 + -6" identifier = (binary_expression "param_1 + -6" identifier + number_literal)) ;) (while_statement "while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }" { (expression_statement "iVar1 = FUN_0023f8e0(&local_48,puVar2);" (assignment_expression "iVar1 = FUN_0023f8e0(&local_48,puVar2)" identifier = (call_expression "FUN_0023f8e0(&local_48,puVar2)" identifier (argument_list "(&local_48,puVar2)" ( (pointer_expression "&local_48" & identifier) , identifier )))) ;) (if_statement "if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;" if (parenthesized_expression "((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20))))" ( (binary_expression "(-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))" (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) && (parenthesized_expression "((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))" ( (parenthesized_expression "(iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20))" ( (binary_expression "iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)" (binary_expression "iVar1 != 0" identifier != number_literal) || (parenthesized_expression "((ulong)puVar2[5] <= uStack_20)" ( (binary_expression "(ulong)puVar2[5] <= uStack_20" (cast_expression "(ulong)puVar2[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar2[5]" identifier [ number_literal ])) <= identifier) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar2[6] = *puVar2;" (assignment_expression "puVar2[6] = *puVar2" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar2[7] = puVar2[1];" (assignment_expression "puVar2[7] = puVar2[1]" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar2[8] = puVar2[2];" (assignment_expression "puVar2[8] = puVar2[2]" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "puVar2[9] = puVar2[3];" (assignment_expression "puVar2[9] = puVar2[3]" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2[10] = puVar2[4];" (assignment_expression "puVar2[10] = puVar2[4]" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "puVar2[0xb] = puVar2[5];" (assignment_expression "puVar2[0xb] = puVar2[5]" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = puVar2 + -6;" (assignment_expression "puVar2 = puVar2 + -6" identifier = (binary_expression "puVar2 + -6" identifier + number_literal)) ;) })) (expression_statement "puVar2[6] = local_48;" (assignment_expression "puVar2[6] = local_48" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[7] = uStack_40;" (assignment_expression "puVar2[7] = uStack_40" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[8] = local_38;" (assignment_expression "puVar2[8] = local_38" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[9] = uStack_30;" (assignment_expression "puVar2[9] = uStack_30" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[10] = local_28;" (assignment_expression "puVar2[10] = local_28" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xb] = uStack_20;" (assignment_expression "puVar2[0xb] = uStack_20" (subscript_expression "puVar2[0xb]" 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<gold::Output_reloc<4,\n   true, 64, true>*, std::vector<gold::Output_reloc<4, true, 64, true>,\n   std::allocator<gold::Output_reloc<4, true, 64, true> > > >,\n   __gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4, true, 64,\n   true>::Sort_relocs_comparison> > */\n\nvoid std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n               (anon_union_8_4_c82d8563_for_u1_ *__last)\n\n{\n  int iVar1;\n  anon_union_8_4_c82d8563_for_u1_ *r2;\n  value_type __val;\n  \n  __val.rel_.u1_ = *__last;\n  __val.rel_.u2_ = *(anon_union_8_2_238bdeaa_for_u2_ *)(__last + 1);\n  __val.rel_.address_ = *(Address *)(__last + 2);\n  __val.rel_._24_8_ = __last[3];\n  __val.rel_._32_8_ = __last[4];\n  __val.addend_ = *(Addend *)(__last + 5);\n  r2 = __last + -6;\n  while( true ) {\n    iVar1 = gold::Output_reloc<9,_true,_64,_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || (r2[5].relobj <= __val.addend_)))) break;\n    r2[6] = *r2;\n    r2[7] = r2[1];\n    r2[8] = r2[2];\n    r2[9] = r2[3];\n    r2[10] = r2[4];\n    r2[0xb] = r2[5];\n    r2 = r2 + -6;\n  }\n  r2[6] = __val.rel_.u1_;\n  r2[7] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.u2_;\n  r2[8] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.address_;\n  r2[9] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._24_8_;\n  r2[10] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._32_8_;\n  r2[0xb] = (anon_union_8_4_c82d8563_for_u1_)__val.addend_;\n  return;\n}\n\n" comment comment (declaration "void std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n               (anon_union_8_4_c82d8563_for_u1_ *__last)\n\n{\n  int iVar1;" primitive_type (ERROR "std::\n     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::" identifier : : identifier < identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">*" > *) , (ERROR "_std::vector<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">" >) , (ERROR "_std::allocator<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">_>_>_>" > identifier > identifier > identifier >) , (ERROR "___gnu_cxx::__ops::_Val_comp_iter<gold::" identifier : : identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , (ERROR "_true>::Sort_relocs_comparison>_>\n               (anon_union_8_4_c82d8563_for_u1_ *__last)\n\n{\n  int" identifier > : : identifier > (function_declarator "_>\n               (anon_union_8_4_c82d8563_for_u1_ *__last)" identifier (ERROR ">" >) (parameter_list "(anon_union_8_4_c82d8563_for_u1_ *__last)" ( (parameter_declaration "anon_union_8_4_c82d8563_for_u1_ *__last" type_identifier (pointer_declarator "*__last" * identifier)) ))) { primitive_type) identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ *r2;" type_identifier (pointer_declarator "*r2" * identifier) ;) (declaration "value_type __val;" type_identifier identifier ;) (expression_statement "__val.rel_.u1_ = *__last;" (assignment_expression "__val.rel_.u1_ = *__last" (field_expression "__val.rel_.u1_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier) = (pointer_expression "*__last" * identifier)) ;) (expression_statement "__val.rel_.u2_ = *(anon_union_8_2_238bdeaa_for_u2_ *)(__last + 1);" (assignment_expression "__val.rel_.u2_ = *(anon_union_8_2_238bdeaa_for_u2_ *)(__last + 1)" (field_expression "__val.rel_.u2_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(anon_union_8_2_238bdeaa_for_u2_ *)(__last + 1)" * (cast_expression "(anon_union_8_2_238bdeaa_for_u2_ *)(__last + 1)" ( (type_descriptor "anon_union_8_2_238bdeaa_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__last + 1)" ( (binary_expression "__last + 1" identifier + number_literal) ))))) ;) (expression_statement "__val.rel_.address_ = *(Address *)(__last + 2);" (assignment_expression "__val.rel_.address_ = *(Address *)(__last + 2)" (field_expression "__val.rel_.address_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(Address *)(__last + 2)" * (cast_expression "(Address *)(__last + 2)" ( (type_descriptor "Address *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__last + 2)" ( (binary_expression "__last + 2" identifier + number_literal) ))))) ;) (expression_statement "__val.rel_._24_8_ = __last[3];" (assignment_expression "__val.rel_._24_8_ = __last[3]" (field_expression "__val.rel_._24_8_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier) = (subscript_expression "__last[3]" identifier [ number_literal ])) ;) (expression_statement "__val.rel_._32_8_ = __last[4];" (assignment_expression "__val.rel_._32_8_ = __last[4]" (field_expression "__val.rel_._32_8_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier) = (subscript_expression "__last[4]" identifier [ number_literal ])) ;) (expression_statement "__val.addend_ = *(Addend *)(__last + 5);" (assignment_expression "__val.addend_ = *(Addend *)(__last + 5)" (field_expression "__val.addend_" identifier . field_identifier) = (pointer_expression "*(Addend *)(__last + 5)" * (cast_expression "(Addend *)(__last + 5)" ( (type_descriptor "Addend *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__last + 5)" ( (binary_expression "__last + 5" identifier + number_literal) ))))) ;) (expression_statement "r2 = __last + -6;" (assignment_expression "r2 = __last + -6" identifier = (binary_expression "__last + -6" identifier + number_literal)) ;) (while_statement "while( true ) {\n    iVar1 = gold::Output_reloc<9,_true,_64,_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || (r2[5].relobj <= __val.addend_)))) break;\n    r2[6] = *r2;\n    r2[7] = r2[1];\n    r2[8] = r2[2];\n    r2[9] = r2[3];\n    r2[10] = r2[4];\n    r2[0xb] = r2[5];\n    r2 = r2 + -6;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = gold::Output_reloc<9,_true,_64,_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || (r2[5].relobj <= __val.addend_)))) break;\n    r2[6] = *r2;\n    r2[7] = r2[1];\n    r2[8] = r2[2];\n    r2[9] = r2[3];\n    r2[10] = r2[4];\n    r2[0xb] = r2[5];\n    r2 = r2 + -6;\n  }" { (ERROR "iVar1 = gold::" (assignment_expression "iVar1 = gold" identifier = identifier) : :) (expression_statement "Output_reloc<9,_true,_64,_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2);" (comma_expression "Output_reloc<9,_true,_64,_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2)" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2)" identifier , (comma_expression "_64,_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2)" identifier , (binary_expression "_true>::compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2)" identifier > (ERROR "::" : :) (call_expression "compare\n                      (&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2)" identifier (argument_list "(&__val.rel_,(Output_reloc<9,_true,_64,_true> *)r2)" ( (pointer_expression "&__val.rel_" & (field_expression "__val.rel_" identifier . field_identifier)) , (parenthesized_expression "(Output_reloc<9,_true,_64,_true> *)r2)" ( (comma_expression "Output_reloc<9,_true,_64,_true> *)r2" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_true> *)r2" identifier , (comma_expression "_64,_true> *)r2" identifier , (binary_expression "_true> *)r2" identifier > (pointer_expression "*)r2" * (ERROR ")" )) identifier))))) )) ))))))) ;) (if_statement "if ((-1 < iVar1) && ((iVar1 != 0 || (r2[5].relobj <= __val.addend_)))) break;" if (parenthesized_expression "((-1 < iVar1) && ((iVar1 != 0 || (r2[5].relobj <= __val.addend_))))" ( (binary_expression "(-1 < iVar1) && ((iVar1 != 0 || (r2[5].relobj <= __val.addend_)))" (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) && (parenthesized_expression "((iVar1 != 0 || (r2[5].relobj <= __val.addend_)))" ( (parenthesized_expression "(iVar1 != 0 || (r2[5].relobj <= __val.addend_))" ( (binary_expression "iVar1 != 0 || (r2[5].relobj <= __val.addend_)" (binary_expression "iVar1 != 0" identifier != number_literal) || (parenthesized_expression "(r2[5].relobj <= __val.addend_)" ( (binary_expression "r2[5].relobj <= __val.addend_" (field_expression "r2[5].relobj" (subscript_expression "r2[5]" identifier [ number_literal ]) . field_identifier) <= (field_expression "__val.addend_" identifier . field_identifier)) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "r2[6] = *r2;" (assignment_expression "r2[6] = *r2" (subscript_expression "r2[6]" identifier [ number_literal ]) = (pointer_expression "*r2" * identifier)) ;) (expression_statement "r2[7] = r2[1];" (assignment_expression "r2[7] = r2[1]" (subscript_expression "r2[7]" identifier [ number_literal ]) = (subscript_expression "r2[1]" identifier [ number_literal ])) ;) (expression_statement "r2[8] = r2[2];" (assignment_expression "r2[8] = r2[2]" (subscript_expression "r2[8]" identifier [ number_literal ]) = (subscript_expression "r2[2]" identifier [ number_literal ])) ;) (expression_statement "r2[9] = r2[3];" (assignment_expression "r2[9] = r2[3]" (subscript_expression "r2[9]" identifier [ number_literal ]) = (subscript_expression "r2[3]" identifier [ number_literal ])) ;) (expression_statement "r2[10] = r2[4];" (assignment_expression "r2[10] = r2[4]" (subscript_expression "r2[10]" identifier [ number_literal ]) = (subscript_expression "r2[4]" identifier [ number_literal ])) ;) (expression_statement "r2[0xb] = r2[5];" (assignment_expression "r2[0xb] = r2[5]" (subscript_expression "r2[0xb]" identifier [ number_literal ]) = (subscript_expression "r2[5]" identifier [ number_literal ])) ;) (expression_statement "r2 = r2 + -6;" (assignment_expression "r2 = r2 + -6" identifier = (binary_expression "r2 + -6" identifier + number_literal)) ;) })) (expression_statement "r2[6] = __val.rel_.u1_;" (assignment_expression "r2[6] = __val.rel_.u1_" (subscript_expression "r2[6]" identifier [ number_literal ]) = (field_expression "__val.rel_.u1_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "r2[7] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.u2_;" (assignment_expression "r2[7] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.u2_" (subscript_expression "r2[7]" identifier [ number_literal ]) = (cast_expression "(anon_union_8_4_c82d8563_for_u1_)__val.rel_.u2_" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_" type_identifier) ) (field_expression "__val.rel_.u2_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "r2[8] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.address_;" (assignment_expression "r2[8] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_.address_" (subscript_expression "r2[8]" identifier [ number_literal ]) = (cast_expression "(anon_union_8_4_c82d8563_for_u1_)__val.rel_.address_" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_" type_identifier) ) (field_expression "__val.rel_.address_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "r2[9] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._24_8_;" (assignment_expression "r2[9] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._24_8_" (subscript_expression "r2[9]" identifier [ number_literal ]) = (cast_expression "(anon_union_8_4_c82d8563_for_u1_)__val.rel_._24_8_" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_" type_identifier) ) (field_expression "__val.rel_._24_8_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "r2[10] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._32_8_;" (assignment_expression "r2[10] = (anon_union_8_4_c82d8563_for_u1_)__val.rel_._32_8_" (subscript_expression "r2[10]" identifier [ number_literal ]) = (cast_expression "(anon_union_8_4_c82d8563_for_u1_)__val.rel_._32_8_" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_" type_identifier) ) (field_expression "__val.rel_._32_8_" (field_expression "__val.rel_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "r2[0xb] = (anon_union_8_4_c82d8563_for_u1_)__val.addend_;" (assignment_expression "r2[0xb] = (anon_union_8_4_c82d8563_for_u1_)__val.addend_" (subscript_expression "r2[0xb]" identifier [ number_literal ]) = (cast_expression "(anon_union_8_4_c82d8563_for_u1_)__val.addend_" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_" type_identifier) ) (field_expression "__val.addend_" identifier . field_identifier))) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00245fa0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}\n\n" (function_definition "void FUN_00245fa0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}" primitive_type (function_declarator "FUN_00245fa0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 uStack_40;" type_identifier identifier ;) (declaration "undefined8 local_38;" type_identifier identifier ;) (declaration "undefined8 uStack_30;" type_identifier identifier ;) (declaration "undefined8 local_28;" type_identifier identifier ;) (declaration "ulong uStack_20;" type_identifier identifier ;) (expression_statement "local_48 = *param_1;" (assignment_expression "local_48 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uStack_40 = param_1[1];" (assignment_expression "uStack_40 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_38 = param_1[2];" (assignment_expression "local_38 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uStack_30 = param_1[3];" (assignment_expression "uStack_30 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_1[4];" (assignment_expression "local_28 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uStack_20 = param_1[5];" (assignment_expression "uStack_20 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = param_1 + -6;" (assignment_expression "puVar2 = param_1 + -6" identifier = (binary_expression "param_1 + -6" identifier + number_literal)) ;) (while_statement "while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }" { (expression_statement "iVar1 = FUN_0023f8e0(&local_48,puVar2);" (assignment_expression "iVar1 = FUN_0023f8e0(&local_48,puVar2)" identifier = (call_expression "FUN_0023f8e0(&local_48,puVar2)" identifier (argument_list "(&local_48,puVar2)" ( (pointer_expression "&local_48" & identifier) , identifier )))) ;) (if_statement "if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;" if (parenthesized_expression "((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20))))" ( (binary_expression "(-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))" (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) && (parenthesized_expression "((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))" ( (parenthesized_expression "(iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20))" ( (binary_expression "iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)" (binary_expression "iVar1 != 0" identifier != number_literal) || (parenthesized_expression "((ulong)puVar2[5] <= uStack_20)" ( (binary_expression "(ulong)puVar2[5] <= uStack_20" (cast_expression "(ulong)puVar2[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar2[5]" identifier [ number_literal ])) <= identifier) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar2[6] = *puVar2;" (assignment_expression "puVar2[6] = *puVar2" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar2[7] = puVar2[1];" (assignment_expression "puVar2[7] = puVar2[1]" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar2[8] = puVar2[2];" (assignment_expression "puVar2[8] = puVar2[2]" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "puVar2[9] = puVar2[3];" (assignment_expression "puVar2[9] = puVar2[3]" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2[10] = puVar2[4];" (assignment_expression "puVar2[10] = puVar2[4]" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "puVar2[0xb] = puVar2[5];" (assignment_expression "puVar2[0xb] = puVar2[5]" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = puVar2 + -6;" (assignment_expression "puVar2 = puVar2 + -6" identifier = (binary_expression "puVar2 + -6" identifier + number_literal)) ;) })) (expression_statement "puVar2[6] = local_48;" (assignment_expression "puVar2[6] = local_48" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[7] = uStack_40;" (assignment_expression "puVar2[7] = uStack_40" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[8] = local_38;" (assignment_expression "puVar2[8] = local_38" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[9] = uStack_30;" (assignment_expression "puVar2[9] = uStack_30" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[10] = local_28;" (assignment_expression "puVar2[10] = local_28" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[0xb] = uStack_20;" (assignment_expression "puVar2[0xb] = uStack_20" (subscript_expression "puVar2[0xb]" 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 = (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 = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) ))) )) ))) )) (break_statement break ;)) (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (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)) ;) })) (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) ;) (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_00245fa0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00245fa0(undefined8 *param_1)" (identifier "FUN_00245fa0") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 local_48;\n  undefined8 uStack_40;\n  undefined8 local_38;\n  undefined8 uStack_30;\n  undefined8 local_28;\n  ulong uStack_20;\n  \n  local_48 = *param_1;\n  uStack_40 = param_1[1];\n  local_38 = param_1[2];\n  uStack_30 = param_1[3];\n  local_28 = param_1[4];\n  uStack_20 = param_1[5];\n  puVar2 = param_1 + -6;\n  while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }\n  puVar2[6] = local_48;\n  puVar2[7] = uStack_40;\n  puVar2[8] = local_38;\n  puVar2[9] = uStack_30;\n  puVar2[10] = local_28;\n  puVar2[0xb] = uStack_20;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "undefined8 uStack_40;" (type_identifier "undefined8") (identifier "uStack_40") (; ";")) (declaration "undefined8 local_38;" (type_identifier "undefined8") (identifier "local_38") (; ";")) (declaration "undefined8 uStack_30;" (type_identifier "undefined8") (identifier "uStack_30") (; ";")) (declaration "undefined8 local_28;" (type_identifier "undefined8") (identifier "local_28") (; ";")) (declaration "ulong uStack_20;" (type_identifier "ulong") (identifier "uStack_20") (; ";")) (expression_statement "local_48 = *param_1;" (assignment_expression "local_48 = *param_1" (identifier "local_48") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uStack_40 = param_1[1];" (assignment_expression "uStack_40 = param_1[1]" (identifier "uStack_40") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_38 = param_1[2];" (assignment_expression "local_38 = param_1[2]" (identifier "local_38") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uStack_30 = param_1[3];" (assignment_expression "uStack_30 = param_1[3]" (identifier "uStack_30") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_28 = param_1[4];" (assignment_expression "local_28 = param_1[4]" (identifier "local_28") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uStack_20 = param_1[5];" (assignment_expression "uStack_20 = param_1[5]" (identifier "uStack_20") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar2 = param_1 + -6;" (assignment_expression "puVar2 = param_1 + -6" (identifier "puVar2") (= "=") (binary_expression "param_1 + -6" (identifier "param_1") (+ "+") (number_literal "-6"))) (; ";")) (while_statement "while( true ) {\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar1 = FUN_0023f8e0(&local_48,puVar2);\n    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;\n    puVar2[6] = *puVar2;\n    puVar2[7] = puVar2[1];\n    puVar2[8] = puVar2[2];\n    puVar2[9] = puVar2[3];\n    puVar2[10] = puVar2[4];\n    puVar2[0xb] = puVar2[5];\n    puVar2 = puVar2 + -6;\n  }" ({ "{") (expression_statement "iVar1 = FUN_0023f8e0(&local_48,puVar2);" (assignment_expression "iVar1 = FUN_0023f8e0(&local_48,puVar2)" (identifier "iVar1") (= "=") (call_expression "FUN_0023f8e0(&local_48,puVar2)" (identifier "FUN_0023f8e0") (argument_list "(&local_48,puVar2)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "puVar2") () ")")))) (; ";")) (if_statement "if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;" (if "if") (parenthesized_expression "((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20))))" (( "(") (binary_expression "(-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))" (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (&& "&&") (parenthesized_expression "((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))" (( "(") (parenthesized_expression "(iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20))" (( "(") (binary_expression "iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)" (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((ulong)puVar2[5] <= uStack_20)" (( "(") (binary_expression "(ulong)puVar2[5] <= uStack_20" (cast_expression "(ulong)puVar2[5]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]"))) (<= "<=") (identifier "uStack_20")) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar2[6] = *puVar2;" (assignment_expression "puVar2[6] = *puVar2" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar2[7] = puVar2[1];" (assignment_expression "puVar2[7] = puVar2[1]" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar2[8] = puVar2[2];" (assignment_expression "puVar2[8] = puVar2[2]" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar2[9] = puVar2[3];" (assignment_expression "puVar2[9] = puVar2[3]" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar2[10] = puVar2[4];" (assignment_expression "puVar2[10] = puVar2[4]" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar2[0xb] = puVar2[5];" (assignment_expression "puVar2[0xb] = puVar2[5]" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar2 = puVar2 + -6;" (assignment_expression "puVar2 = puVar2 + -6" (identifier "puVar2") (= "=") (binary_expression "puVar2 + -6" (identifier "puVar2") (+ "+") (number_literal "-6"))) (; ";")) (} "}"))) (expression_statement "puVar2[6] = local_48;" (assignment_expression "puVar2[6] = local_48" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "puVar2[7] = uStack_40;" (assignment_expression "puVar2[7] = uStack_40" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uStack_40")) (; ";")) (expression_statement "puVar2[8] = local_38;" (assignment_expression "puVar2[8] = local_38" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "local_38")) (; ";")) (expression_statement "puVar2[9] = uStack_30;" (assignment_expression "puVar2[9] = uStack_30" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uStack_30")) (; ";")) (expression_statement "puVar2[10] = local_28;" (assignment_expression "puVar2[10] = local_28" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "puVar2[0xb] = uStack_20;" (assignment_expression "puVar2[0xb] = uStack_20" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "uStack_20")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,
   true, 64, true>*, std::vector<gold::Output_reloc<4, true, 64, true>,
   std::allocator<gold::Output_reloc<4, true, 64, true> > > >,
   __gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4, true, 64,
   true>::Sort_relocs_comparison> > */

void std::
     __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::var_2<4,var_3,_64,var_3>*,_std::vector<gold::var_2<4,var_3,_64,var_3>,_std::allocator<gold::var_2<4,var_3,_64,var_3>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,var_3,_64,var_3>::Sort_relocs_comparison>_>
               (type_1 *var_1)

{
  int var_5;
  type_1 *var_6;
  type_2 __val;
  
  __val.rel_.u1_ = *var_1;
  __val.rel_.u2_ = *(type_3 *)(var_1 + 1);
  __val.rel_.address_ = *(type_4 *)(var_1 + 2);
  __val.rel_._24_8_ = var_1[3];
  __val.rel_._32_8_ = var_1[4];
  __val.addend_ = *(type_5 *)(var_1 + 5);
  var_6 = var_1 + -6;
  while( true ) {
    var_5 = gold::var_2<9,var_3,_64,var_3>::var_4
                      (&__val.rel_,(var_2<9,var_3,_64,var_3> *)var_6);
    if ((-1 < var_5) && ((var_5 != 0 || (var_6[5].relobj <= __val.addend_)))) break;
    var_6[6] = *var_6;
    var_6[7] = var_6[1];
    var_6[8] = var_6[2];
    var_6[9] = var_6[3];
    var_6[10] = var_6[4];
    var_6[0xb] = var_6[5];
    var_6 = var_6 + -6;
  }
  var_6[6] = __val.rel_.u1_;
  var_6[7] = (type_1)__val.rel_.u2_;
  var_6[8] = (type_1)__val.rel_.address_;
  var_6[9] = (type_1)__val.rel_._24_8_;
  var_6[10] = (type_1)__val.rel_._32_8_;
  var_6[0xb] = (type_1)__val.addend_;
  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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (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: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier)))))))) consequence: (break_statement)) (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: (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: (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)))))) (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))) (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(undefined8 *param_1)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 local_48;
  undefined8 uStack_40;
  undefined8 local_38;
  undefined8 uStack_30;
  undefined8 local_28;
  ulong uStack_20;
  
  local_48 = *param_1;
  uStack_40 = param_1[1];
  local_38 = param_1[2];
  uStack_30 = param_1[3];
  local_28 = param_1[4];
  uStack_20 = param_1[5];
  puVar2 = param_1 + -6;
  while( true ) {
    iVar1 = FUN_0023f8e0(&local_48,puVar2);
    if ((-1 < iVar1) && ((iVar1 != 0 || ((ulong)puVar2[5] <= uStack_20)))) break;
    puVar2[6] = *puVar2;
    puVar2[7] = puVar2[1];
    puVar2[8] = puVar2[2];
    puVar2[9] = puVar2[3];
    puVar2[10] = puVar2[4];
    puVar2[0xb] = puVar2[5];
    puVar2 = puVar2 + -6;
  }
  puVar2[6] = local_48;
  puVar2[7] = uStack_40;
  puVar2[8] = local_38;
  puVar2[9] = uStack_30;
  puVar2[10] = local_28;
  puVar2[0xb] = uStack_20;
  return;
}

