
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,
   std::vector<gold::Output_section::Input_section_sort_entry> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>
   > */

void std::
     __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>
               (__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>
                __first,__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>
                        __last,
               _Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>
               *__comp)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar2;
  long lVar3;
  long lVar4;
  _ValueType __value;
  size_type local_88;
  anon_union_8_2_227b06d7_for_u1_ aStack_80;
  anon_union_8_4_139239c7_for_u2_ local_78;
  size_type sStack_70;
  uint local_68;
  size_type *local_60;
  size_type local_58;
  size_type local_50;
  undefined8 uStack_48;
  
  if ((long)__last._M_current - (long)__first._M_current < 0x49) {
    return;
  }
  lVar4 = ((long)__last._M_current - (long)__first._M_current >> 3) * -0x71c71c71c71c71c7;
  lVar3 = (lVar4 + -2) / 2;
  paVar1 = &__value.section_name_.field_2;
  paVar2 = &__first._M_current[lVar3].section_name_.field_2;
  do {
    __value.input_section_._0_8_ = (&paVar2->_M_allocated_capacity)[-7];
    __value.input_section_.u1_ =
         *(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6);
    __value.input_section_.u2_ =
         *(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5);
    __value.input_section_._24_8_ = (&paVar2->_M_allocated_capacity)[-4];
    __value.index_ = (uint)(&paVar2->_M_allocated_capacity)[-3];
    local_60 = (size_type *)(&paVar2->_M_allocated_capacity)[-2];
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)local_60 == paVar2) {
      __value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity;
      __value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1];
      local_58 = (&paVar2->_M_allocated_capacity)[-1];
      paVar2->_M_local_buf[0] = '\0';
      (&paVar2->_M_allocated_capacity)[-1] = 0;
LAB_0023190a:
      local_60 = &local_50;
      uStack_48 = __value.section_name_.field_2._8_8_;
    }
    else {
      __value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;
      local_58 = (&paVar2->_M_allocated_capacity)[-1];
      (&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;
      (&paVar2->_M_allocated_capacity)[-1] = 0;
      paVar2->_M_local_buf[0] = '\0';
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)local_60 == paVar1) goto LAB_0023190a;
    }
    local_50 = __value.section_name_.field_2._M_allocated_capacity;
    __value.section_name_._M_string_length = 0;
    __value.section_name_.field_2._M_allocated_capacity =
         __value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00;
    __value.section_name_._M_dataplus._M_p = (pointer)paVar1;
    local_88 = __value.input_section_._0_8_;
    aStack_80 = __value.input_section_.u1_;
    local_78 = __value.input_section_.u2_;
    sStack_70 = __value.input_section_._24_8_;
    local_68 = __value.index_;
                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */
    __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,_long_int,_gold::Output_section::Input_section_sort_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>
              (__first._M_current,lVar3,lVar4,&local_88);
    if (local_60 != &local_50) {
      operator_delete(local_60);
    }
    if (lVar3 == 0) {
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {
        operator_delete(__value.section_name_._M_dataplus._M_p);
      }
      return;
    }
    lVar3 = lVar3 + -1;
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)__value.section_name_._M_dataplus._M_p != paVar1) {
      operator_delete(__value.section_name_._M_dataplus._M_p);
    }
    paVar2 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
              *)(&paVar2->_M_allocated_capacity + -9);
  } while( true );
}



/* WARNING: Removing unreachable block (ram,0x0023189f) */
/* WARNING: Removing unreachable block (ram,0x0023192e) */

void FUN_00231780(long param_1,long param_2)

{
  ulong *puVar1;
  long lVar2;
  long lVar3;
  ulong local_a0;
  ulong uStack_98;
  ulong local_88;
  ulong uStack_80;
  ulong local_78;
  ulong uStack_70;
  undefined4 local_68;
  ulong *local_60;
  ulong local_58;
  ulong local_50;
  ulong uStack_48;
  
  if (param_2 - param_1 < 0x49) {
    return;
  }
  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;
  lVar2 = (lVar3 + -2) / 2;
  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);
  do {
    local_88 = puVar1[-7];
    uStack_80 = puVar1[-6];
    local_78 = puVar1[-5];
    uStack_70 = puVar1[-4];
    local_68 = (undefined4)puVar1[-3];
    local_60 = (ulong *)puVar1[-2];
    if (local_60 == puVar1) {
      local_a0 = *puVar1;
      uStack_98 = puVar1[1];
      local_58 = puVar1[-1];
      *(undefined1 *)puVar1 = 0;
      puVar1[-1] = 0;
LAB_0023190a:
      local_60 = &local_50;
      uStack_48 = uStack_98;
    }
    else {
      local_a0 = *puVar1;
      local_58 = puVar1[-1];
      puVar1[-2] = (ulong)puVar1;
      puVar1[-1] = 0;
      *(undefined1 *)puVar1 = 0;
      if (local_60 == &local_a0) goto LAB_0023190a;
    }
    local_50 = local_a0;
    local_a0 = local_a0 & 0xffffffffffffff00;
                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */
    FUN_002312f0(param_1,lVar2,lVar3,&local_88);
    if (local_60 != &local_50) {
      FUN_002dac70();
    }
    if (lVar2 == 0) {
      return;
    }
    lVar2 = lVar2 + -1;
    puVar1 = puVar1 + -9;
  } while( true );
}


SUB RSI,RDI
CMP RSI,0x48
JLE 0x00231948
PUSH R15
SAR RSI,0x3
MOV R15,RDI
PUSH R14
MOV R14,-0x71c71c71c71c71c7
IMUL R14,RSI
PUSH R13
PUSH R12
PUSH RBP
LEA RAX,[R14 + -0x2]
PUSH RBX
MOV RBP,RAX
SHR RBP,0x3f
ADD RBP,RAX
SUB RSP,0xb8
SAR RBP,0x1
LEA R13,[RSP + 0x60]
LEA R12,[RSP + 0x48]
LEA RAX,[RBP + RBP*0x8]
LEA RBX,[RDI + RAX*0x8 + 0x38]
LEA RAX,[RSP + 0x10]
MOV qword ptr [RSP + 0x8],RAX
JMP 0x002318a8
MOV RCX,qword ptr [RBX]
MOV RSI,qword ptr [RBX + -0x8]
MOV dword ptr [RSP + 0x80],EDX
LEA RDX,[R13 + 0x38]
MOV qword ptr [RSP + 0x38],RAX
MOV qword ptr [RSP + 0x48],RCX
MOV qword ptr [RBX + -0x10],RBX
MOV qword ptr [RBX + -0x8],0x0
MOV byte ptr [RBX],0x0
MOVAPS xmmword ptr [RSP + 0x60],XMM1
MOVAPS xmmword ptr [RSP + 0x70],XMM0
MOV qword ptr [RSP + 0x88],RDX
CMP RAX,R12
JZ 0x0023190a
MOV qword ptr [RSP + 0x88],RAX
MOV qword ptr [RSP + 0x98],RCX
MOV RCX,R13
MOV RDX,R14
MOV RDI,R15
MOV qword ptr [RSP + 0x38],R12
MOV qword ptr [RSP + 0x90],RSI
MOV RSI,RBP
MOV qword ptr [RSP + 0x40],0x0
MOV byte ptr [RSP + 0x48],0x0
CALL 0x002312f0
MOV RDI,qword ptr [RSP + 0x88]
LEA RAX,[R13 + 0x38]
CMP RDI,RAX
JZ 0x00231888
CALL 0x002dac70
MOV RDI,qword ptr [RSP + 0x38]
TEST RBP,RBP
JZ 0x00231920
SUB RBP,0x1
CMP RDI,R12
JZ 0x002318a4
CALL 0x002dac70
SUB RBX,0x48
MOVDQU XMM1,xmmword ptr [RBX + -0x38]
MOVDQU XMM0,xmmword ptr [RBX + -0x28]
MOV qword ptr [RSP + 0x38],R12
MOV EDX,dword ptr [RBX + -0x18]
MOV RAX,qword ptr [RBX + -0x10]
MOVAPS xmmword ptr [RSP + 0x10],XMM1
MOVAPS xmmword ptr [RSP + 0x20],XMM0
MOV dword ptr [RSP + 0x30],EDX
CMP RAX,RBX
JNZ 0x002317f0
LEA RAX,[R13 + 0x38]
MOVDQU XMM2,xmmword ptr [RBX]
MOV RSI,qword ptr [RBX + -0x8]
MOV byte ptr [RBX],0x0
MOV qword ptr [RBX + -0x8],0x0
MOV dword ptr [RSP + 0x80],EDX
MOV qword ptr [RSP + 0x88],RAX
MOVUPS xmmword ptr [RSP + 0x48],XMM2
MOVAPS xmmword ptr [RSP + 0x60],XMM1
MOVAPS xmmword ptr [RSP + 0x70],XMM0
MOVDQU XMM3,xmmword ptr [RSP + 0x48]
MOVUPS xmmword ptr [RSP + 0x98],XMM3
JMP 0x00231846
MOV RAX,qword ptr [RSP + 0x8]
ADD RAX,0x38
CMP RDI,RAX
JZ 0x00231933
CALL 0x002dac70
ADD RSP,0xb8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
RET
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0023189f) */\n/* WARNING: Removing unreachable block (ram,0x0023192e) */\n\nvoid FUN_00231780(long param_1,long param_2)\n\n{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}\n\n" comment comment (function_definition "void FUN_00231780(long param_1,long param_2)\n\n{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00231780(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}" { (declaration "ulong *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_a0;" type_identifier identifier ;) (declaration "ulong uStack_98;" type_identifier identifier ;) (declaration "ulong local_88;" type_identifier identifier ;) (declaration "ulong uStack_80;" type_identifier identifier ;) (declaration "ulong local_78;" type_identifier identifier ;) (declaration "ulong uStack_70;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "ulong *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "ulong local_58;" type_identifier identifier ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "ulong uStack_48;" type_identifier identifier ;) (if_statement "if (param_2 - param_1 < 0x49) {\n    return;\n  }" if (parenthesized_expression "(param_2 - param_1 < 0x49)" ( (binary_expression "param_2 - param_1 < 0x49" (binary_expression "param_2 - param_1" identifier - identifier) < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;" (assignment_expression "lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7" identifier = (binary_expression "(param_2 - param_1 >> 3) * -0x71c71c71c71c71c7" (parenthesized_expression "(param_2 - param_1 >> 3)" ( (binary_expression "param_2 - param_1 >> 3" (binary_expression "param_2 - param_1" identifier - identifier) >> number_literal) )) * number_literal)) ;) (expression_statement "lVar2 = (lVar3 + -2) / 2;" (assignment_expression "lVar2 = (lVar3 + -2) / 2" identifier = (binary_expression "(lVar3 + -2) / 2" (parenthesized_expression "(lVar3 + -2)" ( (binary_expression "lVar3 + -2" identifier + number_literal) )) / number_literal)) ;) (expression_statement "puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);" (assignment_expression "puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48)" identifier = (cast_expression "(ulong *)(param_1 + 0x38 + lVar2 * 0x48)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38 + lVar2 * 0x48)" ( (binary_expression "param_1 + 0x38 + lVar2 * 0x48" (binary_expression "param_1 + 0x38" identifier + number_literal) + (binary_expression "lVar2 * 0x48" identifier * number_literal)) )))) ;) (do_statement "do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );" do (compound_statement "{\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  }" { (expression_statement "local_88 = puVar1[-7];" (assignment_expression "local_88 = puVar1[-7]" identifier = (subscript_expression "puVar1[-7]" identifier [ number_literal ])) ;) (expression_statement "uStack_80 = puVar1[-6];" (assignment_expression "uStack_80 = puVar1[-6]" identifier = (subscript_expression "puVar1[-6]" identifier [ number_literal ])) ;) (expression_statement "local_78 = puVar1[-5];" (assignment_expression "local_78 = puVar1[-5]" identifier = (subscript_expression "puVar1[-5]" identifier [ number_literal ])) ;) (expression_statement "uStack_70 = puVar1[-4];" (assignment_expression "uStack_70 = puVar1[-4]" identifier = (subscript_expression "puVar1[-4]" identifier [ number_literal ])) ;) (expression_statement "local_68 = (undefined4)puVar1[-3];" (assignment_expression "local_68 = (undefined4)puVar1[-3]" identifier = (cast_expression "(undefined4)puVar1[-3]" ( (type_descriptor "undefined4" type_identifier) ) (subscript_expression "puVar1[-3]" identifier [ number_literal ]))) ;) (expression_statement "local_60 = (ulong *)puVar1[-2];" (assignment_expression "local_60 = (ulong *)puVar1[-2]" identifier = (cast_expression "(ulong *)puVar1[-2]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar1[-2]" identifier [ number_literal ]))) ;) (if_statement "if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" if (parenthesized_expression "(local_60 == puVar1)" ( (binary_expression "local_60 == puVar1" identifier == identifier) )) (compound_statement "{\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }" { (expression_statement "local_a0 = *puVar1;" (assignment_expression "local_a0 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "uStack_98 = puVar1[1];" (assignment_expression "uStack_98 = puVar1[1]" identifier = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "local_58 = puVar1[-1];" (assignment_expression "local_58 = puVar1[-1]" identifier = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)puVar1 = 0;" (assignment_expression "*(undefined1 *)puVar1 = 0" (pointer_expression "*(undefined1 *)puVar1" * (cast_expression "(undefined1 *)puVar1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar1[-1] = 0;" (assignment_expression "puVar1[-1] = 0" (subscript_expression "puVar1[-1]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0023190a:\n      local_60 = &local_50;" statement_identifier : (expression_statement "local_60 = &local_50;" (assignment_expression "local_60 = &local_50" identifier = (pointer_expression "&local_50" & identifier)) ;)) (expression_statement "uStack_48 = uStack_98;" (assignment_expression "uStack_48 = uStack_98" identifier = identifier) ;) }) (else_clause "else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" else (compound_statement "{\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" { (expression_statement "local_a0 = *puVar1;" (assignment_expression "local_a0 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "local_58 = puVar1[-1];" (assignment_expression "local_58 = puVar1[-1]" identifier = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar1[-2] = (ulong)puVar1;" (assignment_expression "puVar1[-2] = (ulong)puVar1" (subscript_expression "puVar1[-2]" identifier [ number_literal ]) = (cast_expression "(ulong)puVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar1[-1] = 0;" (assignment_expression "puVar1[-1] = 0" (subscript_expression "puVar1[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar1 = 0;" (assignment_expression "*(undefined1 *)puVar1 = 0" (pointer_expression "*(undefined1 *)puVar1" * (cast_expression "(undefined1 *)puVar1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_60 == &local_a0) goto LAB_0023190a;" if (parenthesized_expression "(local_60 == &local_a0)" ( (binary_expression "local_60 == &local_a0" identifier == (pointer_expression "&local_a0" & identifier)) )) (goto_statement "goto LAB_0023190a;" goto statement_identifier ;)) }))) (expression_statement "local_50 = local_a0;" (assignment_expression "local_50 = local_a0" identifier = identifier) ;) (expression_statement "local_a0 = local_a0 & 0xffffffffffffff00;" (assignment_expression "local_a0 = local_a0 & 0xffffffffffffff00" identifier = (binary_expression "local_a0 & 0xffffffffffffff00" identifier & number_literal)) ;) comment (expression_statement "FUN_002312f0(param_1,lVar2,lVar3,&local_88);" (call_expression "FUN_002312f0(param_1,lVar2,lVar3,&local_88)" identifier (argument_list "(param_1,lVar2,lVar3,&local_88)" ( identifier , identifier , identifier , (pointer_expression "&local_88" & identifier) ))) ;) (if_statement "if (local_60 != &local_50) {\n      FUN_002dac70();\n    }" if (parenthesized_expression "(local_60 != &local_50)" ( (binary_expression "local_60 != &local_50" identifier != (pointer_expression "&local_50" & identifier)) )) (compound_statement "{\n      FUN_002dac70();\n    }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (lVar2 == 0) {\n      return;\n    }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" identifier = (binary_expression "lVar2 + -1" identifier + number_literal)) ;) (expression_statement "puVar1 = puVar1 + -9;" (assignment_expression "puVar1 = puVar1 + -9" identifier = (binary_expression "puVar1 + -9" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,\n   std::vector<gold::Output_section::Input_section_sort_entry> >,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>\n   > */\n\nvoid std::\n     __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n               (__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                __first,__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                        __last,\n               _Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>\n               *__comp)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  long lVar3;\n  long lVar4;\n  _ValueType __value;\n  size_type local_88;\n  anon_union_8_2_227b06d7_for_u1_ aStack_80;\n  anon_union_8_4_139239c7_for_u2_ local_78;\n  size_type sStack_70;\n  uint local_68;\n  size_type *local_60;\n  size_type local_58;\n  size_type local_50;\n  undefined8 uStack_48;\n  \n  if ((long)__last._M_current - (long)__first._M_current < 0x49) {\n    return;\n  }\n  lVar4 = ((long)__last._M_current - (long)__first._M_current >> 3) * -0x71c71c71c71c71c7;\n  lVar3 = (lVar4 + -2) / 2;\n  paVar1 = &__value.section_name_.field_2;\n  paVar2 = &__first._M_current[lVar3].section_name_.field_2;\n  do {\n    __value.input_section_._0_8_ = (&paVar2->_M_allocated_capacity)[-7];\n    __value.input_section_.u1_ =\n         *(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6);\n    __value.input_section_.u2_ =\n         *(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5);\n    __value.input_section_._24_8_ = (&paVar2->_M_allocated_capacity)[-4];\n    __value.index_ = (uint)(&paVar2->_M_allocated_capacity)[-3];\n    local_60 = (size_type *)(&paVar2->_M_allocated_capacity)[-2];\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_60 == paVar2) {\n      __value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity;\n      __value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1];\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      paVar2->_M_local_buf[0] = '\0';\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = __value.section_name_.field_2._8_8_;\n    }\n    else {\n      __value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      (&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\n      paVar2->_M_local_buf[0] = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1) goto LAB_0023190a;\n    }\n    local_50 = __value.section_name_.field_2._M_allocated_capacity;\n    __value.section_name_._M_string_length = 0;\n    __value.section_name_.field_2._M_allocated_capacity =\n         __value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00;\n    __value.section_name_._M_dataplus._M_p = (pointer)paVar1;\n    local_88 = __value.input_section_._0_8_;\n    aStack_80 = __value.input_section_.u1_;\n    local_78 = __value.input_section_.u2_;\n    sStack_70 = __value.input_section_._24_8_;\n    local_68 = __value.index_;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,_long_int,_gold::Output_section::Input_section_sort_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88);\n    if (local_60 != &local_50) {\n      operator_delete(local_60);\n    }\n    if (lVar3 == 0) {\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {\n        operator_delete(__value.section_name_._M_dataplus._M_p);\n      }\n      return;\n    }\n    lVar3 = lVar3 + -1;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p != paVar1) {\n      operator_delete(__value.section_name_._M_dataplus._M_p);\n    }\n    paVar2 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n              *)(&paVar2->_M_allocated_capacity + -9);\n  } while( true );\n}\n\n" comment comment (declaration "void std::\n     __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n               (__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                __first,__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                        __last,\n               _Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>\n               *__comp)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;" primitive_type (ERROR "std::\n     __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::" identifier : : identifier < identifier : : identifier < identifier : : identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::Output_section::Input_section_sort_entry>" identifier : : identifier < identifier : : identifier : : identifier >) identifier (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n               (__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                __first,__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                        __last,\n               _Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>\n               *__comp)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9" identifier : : identifier : : identifier < identifier : : identifier : : identifier > (function_declarator "_>\n               (__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                __first,__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                        __last,\n               _Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>\n               *__comp)" identifier (ERROR ">" >) (parameter_list "(__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                __first,__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                        __last,\n               _Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>\n               *__comp)" ( (parameter_declaration "__normal_iterator<gold::Output_section::Input_section_sort_entry*" type_identifier (ERROR "<gold::Output_section::Input_section_sort_entry" < identifier : : identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::vector<gold::Output_section::Input_section_sort_entry" type_identifier (ERROR "::vector<gold::Output_section::" : : identifier < identifier : : identifier : :) identifier) , (parameter_declaration "_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                __first" type_identifier (ERROR "::allocator<gold::Output_section::Input_section_sort_entry>_>_>" : : identifier < identifier : : identifier : : identifier > identifier > identifier >) identifier) , (parameter_declaration "__normal_iterator<gold::Output_section::Input_section_sort_entry*" type_identifier (ERROR "<gold::Output_section::Input_section_sort_entry" < identifier : : identifier : : identifier) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::vector<gold::Output_section::Input_section_sort_entry" type_identifier (ERROR "::vector<gold::Output_section::" : : identifier < identifier : : identifier : :) identifier) , (parameter_declaration "_std::allocator<gold::Output_section::Input_section_sort_entry>_>_>\n                        __last" type_identifier (ERROR "::allocator<gold::Output_section::Input_section_sort_entry>_>_>" : : identifier < identifier : : identifier : : identifier > identifier > identifier >) identifier) , (parameter_declaration "_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>\n               *__comp" type_identifier (ERROR "<gold::Output_section::Input_section_sort_section_order_index_compare>" < identifier : : identifier : : identifier >) (pointer_declarator "*__comp" * identifier)) ))) { identifier < primitive_type , identifier : : identifier < primitive_type > , identifier : : identifier < primitive_type > identifier > identifier) (pointer_declarator "*paVar1" * identifier) ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char," (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_>_9\n  *paVar2;" (binary_expression "allocator<char>_>_9\n  *paVar2" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar2" identifier * identifier)) ;)) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "_ValueType __value;" type_identifier identifier ;) (declaration "size_type local_88;" type_identifier identifier ;) (declaration "anon_union_8_2_227b06d7_for_u1_ aStack_80;" type_identifier identifier ;) (declaration "anon_union_8_4_139239c7_for_u2_ local_78;" type_identifier identifier ;) (declaration "size_type sStack_70;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "size_type *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "size_type local_58;" type_identifier identifier ;) (declaration "size_type local_50;" type_identifier identifier ;) (declaration "undefined8 uStack_48;" type_identifier identifier ;) (if_statement "if ((long)__last._M_current - (long)__first._M_current < 0x49) {\n    return;\n  }" if (parenthesized_expression "((long)__last._M_current - (long)__first._M_current < 0x49)" ( (binary_expression "(long)__last._M_current - (long)__first._M_current < 0x49" (binary_expression "(long)__last._M_current - (long)__first._M_current" (cast_expression "(long)__last._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__last._M_current" identifier . field_identifier)) - (cast_expression "(long)__first._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__first._M_current" identifier . field_identifier))) < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar4 = ((long)__last._M_current - (long)__first._M_current >> 3) * -0x71c71c71c71c71c7;" (assignment_expression "lVar4 = ((long)__last._M_current - (long)__first._M_current >> 3) * -0x71c71c71c71c71c7" identifier = (binary_expression "((long)__last._M_current - (long)__first._M_current >> 3) * -0x71c71c71c71c71c7" (parenthesized_expression "((long)__last._M_current - (long)__first._M_current >> 3)" ( (binary_expression "(long)__last._M_current - (long)__first._M_current >> 3" (binary_expression "(long)__last._M_current - (long)__first._M_current" (cast_expression "(long)__last._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__last._M_current" identifier . field_identifier)) - (cast_expression "(long)__first._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__first._M_current" identifier . field_identifier))) >> number_literal) )) * number_literal)) ;) (expression_statement "lVar3 = (lVar4 + -2) / 2;" (assignment_expression "lVar3 = (lVar4 + -2) / 2" identifier = (binary_expression "(lVar4 + -2) / 2" (parenthesized_expression "(lVar4 + -2)" ( (binary_expression "lVar4 + -2" identifier + number_literal) )) / number_literal)) ;) (expression_statement "paVar1 = &__value.section_name_.field_2;" (assignment_expression "paVar1 = &__value.section_name_.field_2" identifier = (pointer_expression "&__value.section_name_.field_2" & (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "paVar2 = &__first._M_current[lVar3].section_name_.field_2;" (assignment_expression "paVar2 = &__first._M_current[lVar3].section_name_.field_2" identifier = (pointer_expression "&__first._M_current[lVar3].section_name_.field_2" & (field_expression "__first._M_current[lVar3].section_name_.field_2" (field_expression "__first._M_current[lVar3].section_name_" (subscript_expression "__first._M_current[lVar3]" (field_expression "__first._M_current" identifier . field_identifier) [ identifier ]) . field_identifier) . field_identifier))) ;) (do_statement "do {\n    __value.input_section_._0_8_ = (&paVar2->_M_allocated_capacity)[-7];\n    __value.input_section_.u1_ =\n         *(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6);\n    __value.input_section_.u2_ =\n         *(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5);\n    __value.input_section_._24_8_ = (&paVar2->_M_allocated_capacity)[-4];\n    __value.index_ = (uint)(&paVar2->_M_allocated_capacity)[-3];\n    local_60 = (size_type *)(&paVar2->_M_allocated_capacity)[-2];\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_60 == paVar2) {\n      __value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity;\n      __value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1];\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      paVar2->_M_local_buf[0] = '\0';\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = __value.section_name_.field_2._8_8_;\n    }\n    else {\n      __value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      (&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\n      paVar2->_M_local_buf[0] = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1) goto LAB_0023190a;\n    }\n    local_50 = __value.section_name_.field_2._M_allocated_capacity;\n    __value.section_name_._M_string_length = 0;\n    __value.section_name_.field_2._M_allocated_capacity =\n         __value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00;\n    __value.section_name_._M_dataplus._M_p = (pointer)paVar1;\n    local_88 = __value.input_section_._0_8_;\n    aStack_80 = __value.input_section_.u1_;\n    local_78 = __value.input_section_.u2_;\n    sStack_70 = __value.input_section_._24_8_;\n    local_68 = __value.index_;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,_long_int,_gold::Output_section::Input_section_sort_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88);\n    if (local_60 != &local_50) {\n      operator_delete(local_60);\n    }\n    if (lVar3 == 0) {\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {\n        operator_delete(__value.section_name_._M_dataplus._M_p);\n      }\n      return;\n    }\n    lVar3 = lVar3 + -1;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p != paVar1) {\n      operator_delete(__value.section_name_._M_dataplus._M_p);\n    }\n    paVar2 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n              *)(&paVar2->_M_allocated_capacity + -9);\n  } while( true );" do (compound_statement "{\n    __value.input_section_._0_8_ = (&paVar2->_M_allocated_capacity)[-7];\n    __value.input_section_.u1_ =\n         *(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6);\n    __value.input_section_.u2_ =\n         *(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5);\n    __value.input_section_._24_8_ = (&paVar2->_M_allocated_capacity)[-4];\n    __value.index_ = (uint)(&paVar2->_M_allocated_capacity)[-3];\n    local_60 = (size_type *)(&paVar2->_M_allocated_capacity)[-2];\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_60 == paVar2) {\n      __value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity;\n      __value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1];\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      paVar2->_M_local_buf[0] = '\0';\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = __value.section_name_.field_2._8_8_;\n    }\n    else {\n      __value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      (&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\n      paVar2->_M_local_buf[0] = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1) goto LAB_0023190a;\n    }\n    local_50 = __value.section_name_.field_2._M_allocated_capacity;\n    __value.section_name_._M_string_length = 0;\n    __value.section_name_.field_2._M_allocated_capacity =\n         __value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00;\n    __value.section_name_._M_dataplus._M_p = (pointer)paVar1;\n    local_88 = __value.input_section_._0_8_;\n    aStack_80 = __value.input_section_.u1_;\n    local_78 = __value.input_section_.u2_;\n    sStack_70 = __value.input_section_._24_8_;\n    local_68 = __value.index_;\n                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */\n    __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,_long_int,_gold::Output_section::Input_section_sort_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88);\n    if (local_60 != &local_50) {\n      operator_delete(local_60);\n    }\n    if (lVar3 == 0) {\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {\n        operator_delete(__value.section_name_._M_dataplus._M_p);\n      }\n      return;\n    }\n    lVar3 = lVar3 + -1;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p != paVar1) {\n      operator_delete(__value.section_name_._M_dataplus._M_p);\n    }\n    paVar2 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n              *)(&paVar2->_M_allocated_capacity + -9);\n  }" { (expression_statement "__value.input_section_._0_8_ = (&paVar2->_M_allocated_capacity)[-7];" (assignment_expression "__value.input_section_._0_8_ = (&paVar2->_M_allocated_capacity)[-7]" (field_expression "__value.input_section_._0_8_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier) = (subscript_expression "(&paVar2->_M_allocated_capacity)[-7]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ])) ;) (expression_statement "__value.input_section_.u1_ =\n         *(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6);" (assignment_expression "__value.input_section_.u1_ =\n         *(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6)" (field_expression "__value.input_section_.u1_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6)" * (cast_expression "(anon_union_8_2_227b06d7_for_u1_ *)(&paVar2->_M_allocated_capacity + -6)" ( (type_descriptor "anon_union_8_2_227b06d7_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&paVar2->_M_allocated_capacity + -6)" ( (binary_expression "&paVar2->_M_allocated_capacity + -6" (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "__value.input_section_.u2_ =\n         *(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5);" (assignment_expression "__value.input_section_.u2_ =\n         *(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5)" (field_expression "__value.input_section_.u2_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5)" * (cast_expression "(anon_union_8_4_139239c7_for_u2_ *)(&paVar2->_M_allocated_capacity + -5)" ( (type_descriptor "anon_union_8_4_139239c7_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&paVar2->_M_allocated_capacity + -5)" ( (binary_expression "&paVar2->_M_allocated_capacity + -5" (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "__value.input_section_._24_8_ = (&paVar2->_M_allocated_capacity)[-4];" (assignment_expression "__value.input_section_._24_8_ = (&paVar2->_M_allocated_capacity)[-4]" (field_expression "__value.input_section_._24_8_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier) = (subscript_expression "(&paVar2->_M_allocated_capacity)[-4]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ])) ;) (expression_statement "__value.index_ = (uint)(&paVar2->_M_allocated_capacity)[-3];" (assignment_expression "__value.index_ = (uint)(&paVar2->_M_allocated_capacity)[-3]" (field_expression "__value.index_" identifier . field_identifier) = (subscript_expression "(uint)(&paVar2->_M_allocated_capacity)[-3]" (call_expression "(uint)(&paVar2->_M_allocated_capacity)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) ))) [ number_literal ])) ;) (expression_statement "local_60 = (size_type *)(&paVar2->_M_allocated_capacity)[-2];" (assignment_expression "local_60 = (size_type *)(&paVar2->_M_allocated_capacity)[-2]" identifier = (cast_expression "(size_type *)(&paVar2->_M_allocated_capacity)[-2]" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "(&paVar2->_M_allocated_capacity)[-2]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ]))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_60 == paVar2) {\n      __value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity;\n      __value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1];\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      paVar2->_M_local_buf[0] = '\0';\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = __value.section_name_.field_2._8_8_;\n    }\n    else {\n      __value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      (&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\n      paVar2->_M_local_buf[0] = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1) goto LAB_0023190a;\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_60 == paVar2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_60 == paVar2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)local_60 == paVar2" (binary_expression "allocator<char>_>_9\n         *)local_60" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)local_60" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (compound_statement "{\n      __value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity;\n      __value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1];\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      paVar2->_M_local_buf[0] = '\0';\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = __value.section_name_.field_2._8_8_;\n    }" { (expression_statement "__value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity;" (assignment_expression "__value.section_name_.field_2._M_allocated_capacity = paVar2->_M_allocated_capacity" (field_expression "__value.section_name_.field_2._M_allocated_capacity" (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "__value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1];" (assignment_expression "__value.section_name_.field_2._8_8_ = (&paVar2->_M_allocated_capacity)[1]" (field_expression "__value.section_name_.field_2._8_8_" (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (subscript_expression "(&paVar2->_M_allocated_capacity)[1]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ])) ;) (expression_statement "local_58 = (&paVar2->_M_allocated_capacity)[-1];" (assignment_expression "local_58 = (&paVar2->_M_allocated_capacity)[-1]" identifier = (subscript_expression "(&paVar2->_M_allocated_capacity)[-1]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ])) ;) (expression_statement "paVar2->_M_local_buf[0] = '\0';" (assignment_expression "paVar2->_M_local_buf[0] = '\0'" (subscript_expression "paVar2->_M_local_buf[0]" (field_expression "paVar2->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(&paVar2->_M_allocated_capacity)[-1] = 0;" (assignment_expression "(&paVar2->_M_allocated_capacity)[-1] = 0" (subscript_expression "(&paVar2->_M_allocated_capacity)[-1]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0023190a:\n      local_60 = &local_50;" statement_identifier : (expression_statement "local_60 = &local_50;" (assignment_expression "local_60 = &local_50" identifier = (pointer_expression "&local_50" & identifier)) ;)) (expression_statement "uStack_48 = __value.section_name_.field_2._8_8_;" (assignment_expression "uStack_48 = __value.section_name_.field_2._8_8_" identifier = (field_expression "__value.section_name_.field_2._8_8_" (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n      __value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      (&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\n      paVar2->_M_local_buf[0] = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1) goto LAB_0023190a;\n    }" else (compound_statement "{\n      __value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;\n      local_58 = (&paVar2->_M_allocated_capacity)[-1];\n      (&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;\n      (&paVar2->_M_allocated_capacity)[-1] = 0;\n      paVar2->_M_local_buf[0] = '\0';\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1) goto LAB_0023190a;\n    }" { (expression_statement "__value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2;" (assignment_expression "__value.section_name_.field_2._M_allocated_capacity = *(undefined8 *)paVar2" (field_expression "__value.section_name_.field_2._M_allocated_capacity" (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (pointer_expression "*(undefined8 *)paVar2" * (cast_expression "(undefined8 *)paVar2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_58 = (&paVar2->_M_allocated_capacity)[-1];" (assignment_expression "local_58 = (&paVar2->_M_allocated_capacity)[-1]" identifier = (subscript_expression "(&paVar2->_M_allocated_capacity)[-1]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ])) ;) (expression_statement "(&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2;" (assignment_expression "(&paVar2->_M_allocated_capacity)[-2] = (size_type)paVar2" (subscript_expression "(&paVar2->_M_allocated_capacity)[-2]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ]) = (cast_expression "(size_type)paVar2" ( (type_descriptor "size_type" type_identifier) ) identifier)) ;) (expression_statement "(&paVar2->_M_allocated_capacity)[-1] = 0;" (assignment_expression "(&paVar2->_M_allocated_capacity)[-1] = 0" (subscript_expression "(&paVar2->_M_allocated_capacity)[-1]" (parenthesized_expression "(&paVar2->_M_allocated_capacity)" ( (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) )) [ number_literal ]) = number_literal) ;) (expression_statement "paVar2->_M_local_buf[0] = '\0';" (assignment_expression "paVar2->_M_local_buf[0] = '\0'" (subscript_expression "paVar2->_M_local_buf[0]" (field_expression "paVar2->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1) goto LAB_0023190a;" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_60 == paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)local_60 == paVar1" (binary_expression "allocator<char>_>_9\n           *)local_60" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)local_60" identifier * (ERROR ")" )) identifier)) == identifier) )) )) (goto_statement "goto LAB_0023190a;" goto statement_identifier ;)) }))) (expression_statement "local_50 = __value.section_name_.field_2._M_allocated_capacity;" (assignment_expression "local_50 = __value.section_name_.field_2._M_allocated_capacity" identifier = (field_expression "__value.section_name_.field_2._M_allocated_capacity" (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "__value.section_name_._M_string_length = 0;" (assignment_expression "__value.section_name_._M_string_length = 0" (field_expression "__value.section_name_._M_string_length" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "__value.section_name_.field_2._M_allocated_capacity =\n         __value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00;" (assignment_expression "__value.section_name_.field_2._M_allocated_capacity =\n         __value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00" (field_expression "__value.section_name_.field_2._M_allocated_capacity" (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "__value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00" (field_expression "__value.section_name_.field_2._M_allocated_capacity" (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) & number_literal)) ;) (expression_statement "__value.section_name_._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "__value.section_name_._M_dataplus._M_p = (pointer)paVar1" (field_expression "__value.section_name_._M_dataplus._M_p" (field_expression "__value.section_name_._M_dataplus" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "local_88 = __value.input_section_._0_8_;" (assignment_expression "local_88 = __value.input_section_._0_8_" identifier = (field_expression "__value.input_section_._0_8_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "aStack_80 = __value.input_section_.u1_;" (assignment_expression "aStack_80 = __value.input_section_.u1_" identifier = (field_expression "__value.input_section_.u1_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "local_78 = __value.input_section_.u2_;" (assignment_expression "local_78 = __value.input_section_.u2_" identifier = (field_expression "__value.input_section_.u2_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "sStack_70 = __value.input_section_._24_8_;" (assignment_expression "sStack_70 = __value.input_section_._24_8_" identifier = (field_expression "__value.input_section_._24_8_" (field_expression "__value.input_section_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "local_68 = __value.index_;" (assignment_expression "local_68 = __value.index_" identifier = (field_expression "__value.index_" identifier . field_identifier)) ;) comment (ERROR "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>_>,_long_int,_gold::" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold" (binary_expression "__adjust_heap<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : : (comma_expression "Output_section::Input_section_sort_entry*,_std" identifier (ERROR "::Input_section_sort_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Output_section::Input_section_sort_entry>_>,_long_int,_gold" identifier (ERROR "::Input_section_sort_entry>_>" : : (binary_expression "Input_section_sort_entry>_" identifier > identifier) >) , (comma_expression "_long_int,_gold" identifier , identifier)) : :) (labeled_statement "Output_section::Input_section_sort_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88);" statement_identifier (ERROR "::Input_section_sort_entry,___gnu_cxx:" : : (comma_expression "Input_section_sort_entry,___gnu_cxx" identifier , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Output_section::Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88);" statement_identifier : (ERROR ":" :) (expression_statement "Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88);" (binary_expression "Input_section_sort_section_order_index_compare>_>\n              (__first._M_current,lVar3,lVar4,&local_88)" (binary_expression "Input_section_sort_section_order_index_compare>_" identifier > identifier) > (parenthesized_expression "(__first._M_current,lVar3,lVar4,&local_88)" ( (comma_expression "__first._M_current,lVar3,lVar4,&local_88" (field_expression "__first._M_current" identifier . field_identifier) , (comma_expression "lVar3,lVar4,&local_88" identifier , (comma_expression "lVar4,&local_88" identifier , (pointer_expression "&local_88" & identifier)))) ))) ;)))) (if_statement "if (local_60 != &local_50) {\n      operator_delete(local_60);\n    }" if (parenthesized_expression "(local_60 != &local_50)" ( (binary_expression "local_60 != &local_50" identifier != (pointer_expression "&local_50" & identifier)) )) (compound_statement "{\n      operator_delete(local_60);\n    }" { (expression_statement "operator_delete(local_60);" (call_expression "operator_delete(local_60)" identifier (argument_list "(local_60)" ( identifier ))) ;) })) (if_statement "if (lVar3 == 0) {\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {\n        operator_delete(__value.section_name_._M_dataplus._M_p);\n      }\n      return;\n    }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {\n        operator_delete(__value.section_name_._M_dataplus._M_p);\n      }\n      return;\n    }" { (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {\n        operator_delete(__value.section_name_._M_dataplus._M_p);\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2" (binary_expression "allocator<char>_>_9\n           *)__value.section_name_._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)__value.section_name_._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "__value.section_name_._M_dataplus._M_p" (field_expression "__value.section_name_._M_dataplus" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier))) != (pointer_expression "&__value.section_name_.field_2" & (field_expression "__value.section_name_.field_2" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier))) )) )) (compound_statement "{\n        operator_delete(__value.section_name_._M_dataplus._M_p);\n      }" { (expression_statement "operator_delete(__value.section_name_._M_dataplus._M_p);" (call_expression "operator_delete(__value.section_name_._M_dataplus._M_p)" identifier (argument_list "(__value.section_name_._M_dataplus._M_p)" ( (field_expression "__value.section_name_._M_dataplus._M_p" (field_expression "__value.section_name_._M_dataplus" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (return_statement "return;" return ;) })) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p != paVar1) {\n      operator_delete(__value.section_name_._M_dataplus._M_p);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n         *)__value.section_name_._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)__value.section_name_._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "__value.section_name_._M_dataplus._M_p" (field_expression "__value.section_name_._M_dataplus" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n      operator_delete(__value.section_name_._M_dataplus._M_p);\n    }" { (expression_statement "operator_delete(__value.section_name_._M_dataplus._M_p);" (call_expression "operator_delete(__value.section_name_._M_dataplus._M_p)" identifier (argument_list "(__value.section_name_._M_dataplus._M_p)" ( (field_expression "__value.section_name_._M_dataplus._M_p" (field_expression "__value.section_name_._M_dataplus" (field_expression "__value.section_name_" identifier . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (expression_statement "paVar2 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n              *)(&paVar2->_M_allocated_capacity + -9);" (assignment_expression "paVar2 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n              *)(&paVar2->_M_allocated_capacity + -9)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n              *)(&paVar2->_M_allocated_capacity + -9)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n              *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(&paVar2->_M_allocated_capacity + -9)" ( (binary_expression "&paVar2->_M_allocated_capacity + -9" (pointer_expression "&paVar2->_M_allocated_capacity" & (field_expression "paVar2->_M_allocated_capacity" identifier -> field_identifier)) + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (ERROR "}" }))
(translation_unit "void FUN_00231780(long param_1,long param_2)\n\n{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}\n\n" (function_definition "void FUN_00231780(long param_1,long param_2)\n\n{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00231780(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}" { (declaration "ulong *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_a0;" type_identifier identifier ;) (declaration "ulong uStack_98;" type_identifier identifier ;) (declaration "ulong local_88;" type_identifier identifier ;) (declaration "ulong uStack_80;" type_identifier identifier ;) (declaration "ulong local_78;" type_identifier identifier ;) (declaration "ulong uStack_70;" type_identifier identifier ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "ulong *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "ulong local_58;" type_identifier identifier ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "ulong uStack_48;" type_identifier identifier ;) (if_statement "if (param_2 - param_1 < 0x49) {\n    return;\n  }" if (parenthesized_expression "(param_2 - param_1 < 0x49)" ( (binary_expression "param_2 - param_1 < 0x49" (binary_expression "param_2 - param_1" identifier - identifier) < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;" (assignment_expression "lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7" identifier = (binary_expression "(param_2 - param_1 >> 3) * -0x71c71c71c71c71c7" (parenthesized_expression "(param_2 - param_1 >> 3)" ( (binary_expression "param_2 - param_1 >> 3" (binary_expression "param_2 - param_1" identifier - identifier) >> number_literal) )) * number_literal)) ;) (expression_statement "lVar2 = (lVar3 + -2) / 2;" (assignment_expression "lVar2 = (lVar3 + -2) / 2" identifier = (binary_expression "(lVar3 + -2) / 2" (parenthesized_expression "(lVar3 + -2)" ( (binary_expression "lVar3 + -2" identifier + number_literal) )) / number_literal)) ;) (expression_statement "puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);" (assignment_expression "puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48)" identifier = (cast_expression "(ulong *)(param_1 + 0x38 + lVar2 * 0x48)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38 + lVar2 * 0x48)" ( (binary_expression "param_1 + 0x38 + lVar2 * 0x48" (binary_expression "param_1 + 0x38" identifier + number_literal) + (binary_expression "lVar2 * 0x48" identifier * number_literal)) )))) ;) (do_statement "do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );" do (compound_statement "{\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  }" { (expression_statement "local_88 = puVar1[-7];" (assignment_expression "local_88 = puVar1[-7]" identifier = (subscript_expression "puVar1[-7]" identifier [ number_literal ])) ;) (expression_statement "uStack_80 = puVar1[-6];" (assignment_expression "uStack_80 = puVar1[-6]" identifier = (subscript_expression "puVar1[-6]" identifier [ number_literal ])) ;) (expression_statement "local_78 = puVar1[-5];" (assignment_expression "local_78 = puVar1[-5]" identifier = (subscript_expression "puVar1[-5]" identifier [ number_literal ])) ;) (expression_statement "uStack_70 = puVar1[-4];" (assignment_expression "uStack_70 = puVar1[-4]" identifier = (subscript_expression "puVar1[-4]" identifier [ number_literal ])) ;) (expression_statement "local_68 = (undefined4)puVar1[-3];" (assignment_expression "local_68 = (undefined4)puVar1[-3]" identifier = (cast_expression "(undefined4)puVar1[-3]" ( (type_descriptor "undefined4" type_identifier) ) (subscript_expression "puVar1[-3]" identifier [ number_literal ]))) ;) (expression_statement "local_60 = (ulong *)puVar1[-2];" (assignment_expression "local_60 = (ulong *)puVar1[-2]" identifier = (cast_expression "(ulong *)puVar1[-2]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar1[-2]" identifier [ number_literal ]))) ;) (if_statement "if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" if (parenthesized_expression "(local_60 == puVar1)" ( (binary_expression "local_60 == puVar1" identifier == identifier) )) (compound_statement "{\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }" { (expression_statement "local_a0 = *puVar1;" (assignment_expression "local_a0 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "uStack_98 = puVar1[1];" (assignment_expression "uStack_98 = puVar1[1]" identifier = (subscript_expression "puVar1[1]" identifier [ number_literal ])) ;) (expression_statement "local_58 = puVar1[-1];" (assignment_expression "local_58 = puVar1[-1]" identifier = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)puVar1 = 0;" (assignment_expression "*(undefined1 *)puVar1 = 0" (pointer_expression "*(undefined1 *)puVar1" * (cast_expression "(undefined1 *)puVar1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar1[-1] = 0;" (assignment_expression "puVar1[-1] = 0" (subscript_expression "puVar1[-1]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0023190a:\n      local_60 = &local_50;" statement_identifier : (expression_statement "local_60 = &local_50;" (assignment_expression "local_60 = &local_50" identifier = (pointer_expression "&local_50" & identifier)) ;)) (expression_statement "uStack_48 = uStack_98;" (assignment_expression "uStack_48 = uStack_98" identifier = identifier) ;) }) (else_clause "else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" else (compound_statement "{\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" { (expression_statement "local_a0 = *puVar1;" (assignment_expression "local_a0 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "local_58 = puVar1[-1];" (assignment_expression "local_58 = puVar1[-1]" identifier = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar1[-2] = (ulong)puVar1;" (assignment_expression "puVar1[-2] = (ulong)puVar1" (subscript_expression "puVar1[-2]" identifier [ number_literal ]) = (cast_expression "(ulong)puVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "puVar1[-1] = 0;" (assignment_expression "puVar1[-1] = 0" (subscript_expression "puVar1[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar1 = 0;" (assignment_expression "*(undefined1 *)puVar1 = 0" (pointer_expression "*(undefined1 *)puVar1" * (cast_expression "(undefined1 *)puVar1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_60 == &local_a0) goto LAB_0023190a;" if (parenthesized_expression "(local_60 == &local_a0)" ( (binary_expression "local_60 == &local_a0" identifier == (pointer_expression "&local_a0" & identifier)) )) (goto_statement "goto LAB_0023190a;" goto statement_identifier ;)) }))) (expression_statement "local_50 = local_a0;" (assignment_expression "local_50 = local_a0" identifier = identifier) ;) (expression_statement "local_a0 = local_a0 & 0xffffffffffffff00;" (assignment_expression "local_a0 = local_a0 & 0xffffffffffffff00" identifier = (binary_expression "local_a0 & 0xffffffffffffff00" identifier & number_literal)) ;) (expression_statement "FUN_002312f0(param_1,lVar2,lVar3,&local_88);" (call_expression "FUN_002312f0(param_1,lVar2,lVar3,&local_88)" identifier (argument_list "(param_1,lVar2,lVar3,&local_88)" ( identifier , identifier , identifier , (pointer_expression "&local_88" & identifier) ))) ;) (if_statement "if (local_60 != &local_50) {\n      FUN_002dac70();\n    }" if (parenthesized_expression "(local_60 != &local_50)" ( (binary_expression "local_60 != &local_50" identifier != (pointer_expression "&local_50" & identifier)) )) (compound_statement "{\n      FUN_002dac70();\n    }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (lVar2 == 0) {\n      return;\n    }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" identifier = (binary_expression "lVar2 + -1" identifier + number_literal)) ;) (expression_statement "puVar1 = puVar1 + -9;" (assignment_expression "puVar1 = puVar1 + -9" identifier = (binary_expression "puVar1 + -9" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00231780(long param_1,long param_2)\n\n{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00231780(long param_1,long param_2)" (identifier "FUN_00231780") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  ulong *puVar1;\n  long lVar2;\n  long lVar3;\n  ulong local_a0;\n  ulong uStack_98;\n  ulong local_88;\n  ulong uStack_80;\n  ulong local_78;\n  ulong uStack_70;\n  undefined4 local_68;\n  ulong *local_60;\n  ulong local_58;\n  ulong local_50;\n  ulong uStack_48;\n  \n  if (param_2 - param_1 < 0x49) {\n    return;\n  }\n  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;\n  lVar2 = (lVar3 + -2) / 2;\n  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);\n  do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );\n}" ({ "{") (declaration "ulong *puVar1;" (type_identifier "ulong") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong local_a0;" (type_identifier "ulong") (identifier "local_a0") (; ";")) (declaration "ulong uStack_98;" (type_identifier "ulong") (identifier "uStack_98") (; ";")) (declaration "ulong local_88;" (type_identifier "ulong") (identifier "local_88") (; ";")) (declaration "ulong uStack_80;" (type_identifier "ulong") (identifier "uStack_80") (; ";")) (declaration "ulong local_78;" (type_identifier "ulong") (identifier "local_78") (; ";")) (declaration "ulong uStack_70;" (type_identifier "ulong") (identifier "uStack_70") (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "ulong *local_60;" (type_identifier "ulong") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "ulong local_58;" (type_identifier "ulong") (identifier "local_58") (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "ulong uStack_48;" (type_identifier "ulong") (identifier "uStack_48") (; ";")) (if_statement "if (param_2 - param_1 < 0x49) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 - param_1 < 0x49)" (( "(") (binary_expression "param_2 - param_1 < 0x49" (binary_expression "param_2 - param_1" (identifier "param_2") (- "-") (identifier "param_1")) (< "<") (number_literal "0x49")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;" (assignment_expression "lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7" (identifier "lVar3") (= "=") (binary_expression "(param_2 - param_1 >> 3) * -0x71c71c71c71c71c7" (parenthesized_expression "(param_2 - param_1 >> 3)" (( "(") (binary_expression "param_2 - param_1 >> 3" (binary_expression "param_2 - param_1" (identifier "param_2") (- "-") (identifier "param_1")) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x71c71c71c71c71c7"))) (; ";")) (expression_statement "lVar2 = (lVar3 + -2) / 2;" (assignment_expression "lVar2 = (lVar3 + -2) / 2" (identifier "lVar2") (= "=") (binary_expression "(lVar3 + -2) / 2" (parenthesized_expression "(lVar3 + -2)" (( "(") (binary_expression "lVar3 + -2" (identifier "lVar3") (+ "+") (number_literal "-2")) () ")")) (/ "/") (number_literal "2"))) (; ";")) (expression_statement "puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);" (assignment_expression "puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48)" (identifier "puVar1") (= "=") (cast_expression "(ulong *)(param_1 + 0x38 + lVar2 * 0x48)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38 + lVar2 * 0x48)" (( "(") (binary_expression "param_1 + 0x38 + lVar2 * 0x48" (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) (+ "+") (binary_expression "lVar2 * 0x48" (identifier "lVar2") (* "*") (number_literal "0x48"))) () ")")))) (; ";")) (do_statement "do {\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  } while( true );" (do "do") (compound_statement "{\n    local_88 = puVar1[-7];\n    uStack_80 = puVar1[-6];\n    local_78 = puVar1[-5];\n    uStack_70 = puVar1[-4];\n    local_68 = (undefined4)puVar1[-3];\n    local_60 = (ulong *)puVar1[-2];\n    if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }\n    local_50 = local_a0;\n    local_a0 = local_a0 & 0xffffffffffffff00;\n                    \n    FUN_002312f0(param_1,lVar2,lVar3,&local_88);\n    if (local_60 != &local_50) {\n      FUN_002dac70();\n    }\n    if (lVar2 == 0) {\n      return;\n    }\n    lVar2 = lVar2 + -1;\n    puVar1 = puVar1 + -9;\n  }" ({ "{") (expression_statement "local_88 = puVar1[-7];" (assignment_expression "local_88 = puVar1[-7]" (identifier "local_88") (= "=") (subscript_expression "puVar1[-7]" (identifier "puVar1") ([ "[") (number_literal "-7") (] "]"))) (; ";")) (expression_statement "uStack_80 = puVar1[-6];" (assignment_expression "uStack_80 = puVar1[-6]" (identifier "uStack_80") (= "=") (subscript_expression "puVar1[-6]" (identifier "puVar1") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "local_78 = puVar1[-5];" (assignment_expression "local_78 = puVar1[-5]" (identifier "local_78") (= "=") (subscript_expression "puVar1[-5]" (identifier "puVar1") ([ "[") (number_literal "-5") (] "]"))) (; ";")) (expression_statement "uStack_70 = puVar1[-4];" (assignment_expression "uStack_70 = puVar1[-4]" (identifier "uStack_70") (= "=") (subscript_expression "puVar1[-4]" (identifier "puVar1") ([ "[") (number_literal "-4") (] "]"))) (; ";")) (expression_statement "local_68 = (undefined4)puVar1[-3];" (assignment_expression "local_68 = (undefined4)puVar1[-3]" (identifier "local_68") (= "=") (cast_expression "(undefined4)puVar1[-3]" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (subscript_expression "puVar1[-3]" (identifier "puVar1") ([ "[") (number_literal "-3") (] "]")))) (; ";")) (expression_statement "local_60 = (ulong *)puVar1[-2];" (assignment_expression "local_60 = (ulong *)puVar1[-2]" (identifier "local_60") (= "=") (cast_expression "(ulong *)puVar1[-2]" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar1[-2]" (identifier "puVar1") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (if_statement "if (local_60 == puVar1) {\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }\n    else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" (if "if") (parenthesized_expression "(local_60 == puVar1)" (( "(") (binary_expression "local_60 == puVar1" (identifier "local_60") (== "==") (identifier "puVar1")) () ")")) (compound_statement "{\n      local_a0 = *puVar1;\n      uStack_98 = puVar1[1];\n      local_58 = puVar1[-1];\n      *(undefined1 *)puVar1 = 0;\n      puVar1[-1] = 0;\nLAB_0023190a:\n      local_60 = &local_50;\n      uStack_48 = uStack_98;\n    }" ({ "{") (expression_statement "local_a0 = *puVar1;" (assignment_expression "local_a0 = *puVar1" (identifier "local_a0") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "uStack_98 = puVar1[1];" (assignment_expression "uStack_98 = puVar1[1]" (identifier "uStack_98") (= "=") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_58 = puVar1[-1];" (assignment_expression "local_58 = puVar1[-1]" (identifier "local_58") (= "=") (subscript_expression "puVar1[-1]" (identifier "puVar1") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)puVar1 = 0;" (assignment_expression "*(undefined1 *)puVar1 = 0" (pointer_expression "*(undefined1 *)puVar1" (* "*") (cast_expression "(undefined1 *)puVar1" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[-1] = 0;" (assignment_expression "puVar1[-1] = 0" (subscript_expression "puVar1[-1]" (identifier "puVar1") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0023190a:\n      local_60 = &local_50;" (statement_identifier "LAB_0023190a") (: ":") (expression_statement "local_60 = &local_50;" (assignment_expression "local_60 = &local_50" (identifier "local_60") (= "=") (pointer_expression "&local_50" (& "&") (identifier "local_50"))) (; ";"))) (expression_statement "uStack_48 = uStack_98;" (assignment_expression "uStack_48 = uStack_98" (identifier "uStack_48") (= "=") (identifier "uStack_98")) (; ";")) (} "}")) (else_clause "else {\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" (else "else") (compound_statement "{\n      local_a0 = *puVar1;\n      local_58 = puVar1[-1];\n      puVar1[-2] = (ulong)puVar1;\n      puVar1[-1] = 0;\n      *(undefined1 *)puVar1 = 0;\n      if (local_60 == &local_a0) goto LAB_0023190a;\n    }" ({ "{") (expression_statement "local_a0 = *puVar1;" (assignment_expression "local_a0 = *puVar1" (identifier "local_a0") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "local_58 = puVar1[-1];" (assignment_expression "local_58 = puVar1[-1]" (identifier "local_58") (= "=") (subscript_expression "puVar1[-1]" (identifier "puVar1") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar1[-2] = (ulong)puVar1;" (assignment_expression "puVar1[-2] = (ulong)puVar1" (subscript_expression "puVar1[-2]" (identifier "puVar1") ([ "[") (number_literal "-2") (] "]")) (= "=") (cast_expression "(ulong)puVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "puVar1"))) (; ";")) (expression_statement "puVar1[-1] = 0;" (assignment_expression "puVar1[-1] = 0" (subscript_expression "puVar1[-1]" (identifier "puVar1") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar1 = 0;" (assignment_expression "*(undefined1 *)puVar1 = 0" (pointer_expression "*(undefined1 *)puVar1" (* "*") (cast_expression "(undefined1 *)puVar1" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_60 == &local_a0) goto LAB_0023190a;" (if "if") (parenthesized_expression "(local_60 == &local_a0)" (( "(") (binary_expression "local_60 == &local_a0" (identifier "local_60") (== "==") (pointer_expression "&local_a0" (& "&") (identifier "local_a0"))) () ")")) (goto_statement "goto LAB_0023190a;" (goto "goto") (statement_identifier "LAB_0023190a") (; ";"))) (} "}")))) (expression_statement "local_50 = local_a0;" (assignment_expression "local_50 = local_a0" (identifier "local_50") (= "=") (identifier "local_a0")) (; ";")) (expression_statement "local_a0 = local_a0 & 0xffffffffffffff00;" (assignment_expression "local_a0 = local_a0 & 0xffffffffffffff00" (identifier "local_a0") (= "=") (binary_expression "local_a0 & 0xffffffffffffff00" (identifier "local_a0") (& "&") (number_literal "0xffffffffffffff00"))) (; ";")) (expression_statement "FUN_002312f0(param_1,lVar2,lVar3,&local_88);" (call_expression "FUN_002312f0(param_1,lVar2,lVar3,&local_88)" (identifier "FUN_002312f0") (argument_list "(param_1,lVar2,lVar3,&local_88)" (( "(") (identifier "param_1") (, ",") (identifier "lVar2") (, ",") (identifier "lVar3") (, ",") (pointer_expression "&local_88" (& "&") (identifier "local_88")) () ")"))) (; ";")) (if_statement "if (local_60 != &local_50) {\n      FUN_002dac70();\n    }" (if "if") (parenthesized_expression "(local_60 != &local_50)" (( "(") (binary_expression "local_60 != &local_50" (identifier "local_60") (!= "!=") (pointer_expression "&local_50" (& "&") (identifier "local_50"))) () ")")) (compound_statement "{\n      FUN_002dac70();\n    }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (lVar2 == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" (identifier "lVar2") (= "=") (binary_expression "lVar2 + -1" (identifier "lVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar1 = puVar1 + -9;" (assignment_expression "puVar1 = puVar1 + -9" (identifier "puVar1") (= "=") (binary_expression "puVar1 + -9" (identifier "puVar1") (+ "+") (number_literal "-9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,
   std::vector<gold::Output_section::Input_section_sort_entry> >,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::Input_section_sort_section_order_index_compare>
   > */

void std::
     __make_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>var_3>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::var_9>var_3>
               (__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::var_1<gold::Output_section::Input_section_sort_entry>var_3>var_3>
                __first,__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry,_std::var_1<gold::Output_section::Input_section_sort_entry>var_3>var_3>
                        __last,
               _Iter_comp_iter<gold::Output_section::var_9>
               *__comp)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_4
  *var_8;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  long var_11;
  long var_6;
  type_1 __value;
  type_2 local_88;
  type_3 aStack_80;
  type_4 local_78;
  type_2 sStack_70;
  type_5 local_68;
  type_2 *var_7;
  type_2 local_58;
  type_2 local_50;
  type_6 uStack_48;
  
  if ((long)__last._M_current - (long)__first._M_current < 0x49) {
    return;
  }
  var_6 = ((long)__last._M_current - (long)__first._M_current >> 3) * -0x71c71c71c71c71c7;
  var_11 = (var_6 + -2) / 2;
  var_8 = &__value.section_name_.field_2;
  var_5 = &__first._M_current[var_11].section_name_.field_2;
  do {
    __value.input_section_._0_8_ = (&var_5->_M_allocated_capacity)[-7];
    __value.input_section_.u1_ =
         *(type_3 *)(&var_5->_M_allocated_capacity + -6);
    __value.input_section_.u2_ =
         *(type_4 *)(&var_5->_M_allocated_capacity + -5);
    __value.input_section_._24_8_ = (&var_5->_M_allocated_capacity)[-4];
    __value.index_ = (type_5)(&var_5->_M_allocated_capacity)[-3];
    var_7 = (type_2 *)(&var_5->_M_allocated_capacity)[-2];
    if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
         *)var_7 == var_5) {
      __value.section_name_.field_2._M_allocated_capacity = var_5->_M_allocated_capacity;
      __value.section_name_.field_2._8_8_ = (&var_5->_M_allocated_capacity)[1];
      local_58 = (&var_5->_M_allocated_capacity)[-1];
      var_5->_M_local_buf[0] = '\0';
      (&var_5->_M_allocated_capacity)[-1] = 0;
LAB_0023190a:
      var_7 = &local_50;
      uStack_48 = __value.section_name_.field_2._8_8_;
    }
    else {
      __value.section_name_.field_2._M_allocated_capacity = *(type_6 *)var_5;
      local_58 = (&var_5->_M_allocated_capacity)[-1];
      (&var_5->_M_allocated_capacity)[-2] = (type_2)var_5;
      (&var_5->_M_allocated_capacity)[-1] = 0;
      var_5->_M_local_buf[0] = '\0';
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_7 == var_8) goto LAB_0023190a;
    }
    local_50 = __value.section_name_.field_2._M_allocated_capacity;
    __value.section_name_._M_string_length = 0;
    __value.section_name_.field_2._M_allocated_capacity =
         __value.section_name_.field_2._M_allocated_capacity & 0xffffffffffffff00;
    __value.section_name_._M_dataplus._M_p = (type_7)var_8;
    local_88 = __value.input_section_._0_8_;
    aStack_80 = __value.input_section_.u1_;
    local_78 = __value.input_section_.u2_;
    sStack_70 = __value.input_section_._24_8_;
    local_68 = __value.index_;
                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */
    __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_section::Input_section_sort_entry*,_std::vector<gold::Output_section::Input_section_sort_entry>var_3>,_long_int,_gold::Output_section::Input_section_sort_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_section::var_9>var_3>
              (__first._M_current,var_11,var_6,&local_88);
    if (var_7 != &local_50) {
      var_10(var_7);
    }
    if (var_11 == 0) {
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)__value.section_name_._M_dataplus._M_p != &__value.section_name_.field_2) {
        var_10(__value.section_name_._M_dataplus._M_p);
      }
      return;
    }
    var_11 = var_11 + -1;
    if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
         *)__value.section_name_._M_dataplus._M_p != var_8) {
      var_10(__value.section_name_._M_dataplus._M_p);
    }
    var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
              *)(&var_5->_M_allocated_capacity + -9);
  } while( true );
}


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

/* WARNING: Removing unreachable block (ram,0x0023189f) */
/* WARNING: Removing unreachable block (ram,0x0023192e) */

void MASKED(long param_1,long param_2)

{
  ulong *puVar1;
  long lVar2;
  long lVar3;
  ulong local_a0;
  ulong uStack_98;
  ulong local_88;
  ulong uStack_80;
  ulong local_78;
  ulong uStack_70;
  undefined4 local_68;
  ulong *local_60;
  ulong local_58;
  ulong local_50;
  ulong uStack_48;
  
  if (param_2 - param_1 < 0x49) {
    return;
  }
  lVar3 = (param_2 - param_1 >> 3) * -0x71c71c71c71c71c7;
  lVar2 = (lVar3 + -2) / 2;
  puVar1 = (ulong *)(param_1 + 0x38 + lVar2 * 0x48);
  do {
    local_88 = puVar1[-7];
    uStack_80 = puVar1[-6];
    local_78 = puVar1[-5];
    uStack_70 = puVar1[-4];
    local_68 = (undefined4)puVar1[-3];
    local_60 = (ulong *)puVar1[-2];
    if (local_60 == puVar1) {
      local_a0 = *puVar1;
      uStack_98 = puVar1[1];
      local_58 = puVar1[-1];
      *(undefined1 *)puVar1 = 0;
      puVar1[-1] = 0;
LAB_0023190a:
      local_60 = &local_50;
      uStack_48 = uStack_98;
    }
    else {
      local_a0 = *puVar1;
      local_58 = puVar1[-1];
      puVar1[-2] = (ulong)puVar1;
      puVar1[-1] = 0;
      *(undefined1 *)puVar1 = 0;
      if (local_60 == &local_a0) goto LAB_0023190a;
    }
    local_50 = local_a0;
    local_a0 = local_a0 & 0xffffffffffffff00;
                    /* try { // try from 0023186d to 00231871 has its CatchHandler @ 00231949 */
    FUN_002312f0(param_1,lVar2,lVar3,&local_88);
    if (local_60 != &local_50) {
      FUN_002dac70();
    }
    if (lVar2 == 0) {
      return;
    }
    lVar2 = lVar2 + -1;
    puVar1 = puVar1 + -9;
  } while( true );
}

