
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __merge_sort_with_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,
   std::vector<gold::Output_section*> >, gold::Output_section**,
   __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::Target_powerpc<64,
   false>::Sort_sections> > */

void std::
     __merge_sort_with_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
               (void)

{
  int iVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  Output_section **ppOVar4;
  int iVar5;
  Output_section **in_ECX;
  int in_EDX;
  int iVar6;
  int iVar7;
  int local_3c;
  int local_20;
  
  iVar6 = in_EDX - in_EAX;
  iVar7 = iVar6 >> 2;
  iVar1 = (int)in_ECX + iVar6;
  iVar2 = in_EAX;
  if (iVar6 < 0x19) {
    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
              ();
    return;
  }
  do {
    iVar2 = iVar2 + 0x1c;
    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
              ();
  } while (0x18 < in_EDX - iVar2);
  __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
            ();
  if (iVar6 < 0x1d) {
    return;
  }
  iVar6 = 7;
  local_3c = 0xe;
  ppOVar4 = in_ECX;
  iVar2 = iVar6;
  if (iVar7 < 0xe) goto LAB_0005de77;
  do {
    iVar3 = in_EAX;
    ppOVar4 = in_ECX;
    do {
      iVar3 = iVar3 + iVar6 * 8;
      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
                          (iVar3,ppOVar4);
      iVar2 = iVar6;
    } while (local_3c <= in_EDX - iVar3 >> 2);
LAB_0005de77:
    do {
      iVar6 = iVar2 * 4;
      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
                (in_EDX,ppOVar4);
      iVar3 = in_EAX;
      ppOVar4 = in_ECX;
      if (iVar7 < iVar6) {
        if (iVar7 <= local_3c) {
          local_3c = iVar7;
        }
        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
                  (in_ECX + local_3c,iVar1,in_EAX);
        return;
      }
      do {
        ppOVar4 = ppOVar4 + iVar2 * 4;
        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);
        iVar5 = iVar1 - (int)ppOVar4 >> 2;
        iVar3 = local_20;
      } while (iVar6 <= iVar5);
      if (local_3c < iVar5) {
        iVar5 = local_3c;
      }
      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>
                (ppOVar4 + iVar5,iVar1,local_20);
      if (iVar7 <= iVar6) {
        return;
      }
      local_3c = iVar2 * 8;
      iVar3 = iVar2 * -8;
      ppOVar4 = in_ECX;
      iVar2 = iVar6;
    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);
  } while( true );
}



void __regparm3 FUN_0005ddb0(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int local_3c;
  int local_20;
  
  iVar5 = param_2 - param_1;
  iVar7 = iVar5 >> 2;
  iVar1 = param_3 + iVar5;
  iVar3 = param_1;
  if (iVar5 < 0x19) {
    FUN_0005dc70();
    return;
  }
  do {
    iVar3 = iVar3 + 0x1c;
    FUN_0005dc70();
  } while (0x18 < param_2 - iVar3);
  FUN_0005dc70();
  if (iVar5 < 0x1d) {
    return;
  }
  iVar6 = 7;
  local_3c = 0xe;
  iVar3 = param_3;
  iVar5 = iVar6;
  if (iVar7 < 0xe) goto LAB_0005de77;
  do {
    iVar2 = param_1;
    iVar3 = param_3;
    do {
      iVar2 = iVar2 + iVar6 * 8;
      iVar3 = FUN_0005d5d0(iVar2,iVar3);
      iVar5 = iVar6;
    } while (local_3c <= param_2 - iVar2 >> 2);
LAB_0005de77:
    do {
      iVar6 = iVar5 * 4;
      FUN_0005d5d0(param_2,iVar3);
      if (iVar7 < iVar6) {
        if (iVar7 <= local_3c) {
          local_3c = iVar7;
        }
        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);
        return;
      }
      iVar2 = param_1;
      iVar3 = param_3;
      do {
        iVar3 = iVar3 + iVar5 * 0x10;
        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);
        iVar4 = iVar1 - iVar3 >> 2;
        iVar2 = local_20;
      } while (iVar6 <= iVar4);
      if (local_3c < iVar4) {
        iVar4 = local_3c;
      }
      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);
      if (iVar7 <= iVar6) {
        return;
      }
      local_3c = iVar5 * 8;
      iVar2 = iVar5 * -8;
      iVar3 = param_3;
      iVar5 = iVar6;
    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EDX
SUB EBX,EAX
MOV EDI,EBX
SUB ESP,0x2c
SAR EDI,0x2
MOV dword ptr [ESP + 0x4],EDI
LEA EDI,[ECX + EBX*0x1]
MOV dword ptr [ESP + 0xc],EDI
CMP EBX,0x18
JLE 0x0005df78
MOV dword ptr [ESP + 0x18],ECX
MOV EDI,EDX
MOV dword ptr [ESP + 0x8],EDX
MOV dword ptr [ESP + 0x14],EAX
LEA ESI,[ESI]
LEA ESI,[EAX + 0x1c]
MOV EDX,ESI
CALL 0x0005dc70
MOV EDX,EDI
MOV EAX,ESI
SUB EDX,ESI
CMP EDX,0x18
JG 0x0005dde8
MOV EDX,dword ptr [ESP + 0x8]
CALL 0x0005dc70
CMP EBX,0x1c
JLE 0x0005df6b
LEA EAX,[ESP + 0x1c]
MOV EBX,0x7
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[EBX + EBX*0x1]
MOV dword ptr [ESP],EAX
CMP dword ptr [ESP + 0x4],EAX
JL 0x0005df25
LEA ESI,[ESI]
LEA EBP,[EBX*0x8 + 0x0]
LEA EDI,[EBX*0x4 + 0x0]
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x14]
SUB EDI,EBP
LEA ESI,[ESI]
NOP
LEA ESI,[EAX + EBP*0x1]
SUB ESP,0x8
PUSH ECX
LEA EDX,[ESI + EDI*0x1]
PUSH ESI
MOV ECX,EDX
CALL 0x0005d5d0
MOV EDX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV ECX,EAX
MOV EAX,ESI
SUB EDX,ESI
SAR EDX,0x2
CMP dword ptr [ESP],EDX
JLE 0x0005de50
CMP EBX,EDX
MOV EAX,ESI
CMOVLE EDX,EBX
SUB ESP,0x8
SHL EBX,0x2
PUSH ECX
PUSH dword ptr [ESP + 0x14]
LEA EDX,[ESI + EDX*0x4]
MOV ECX,EDX
CALL 0x0005d5d0
MOV ECX,dword ptr [ESP + 0x24]
ADD ESP,0x10
CMP dword ptr [ESP + 0x4],EBX
JL 0x0005df40
MOV EAX,dword ptr [ESP]
LEA EBP,[EBX*0x4 + 0x0]
MOV EDX,dword ptr [ESP + 0x18]
LEA EDI,[EAX*0x4 + 0x0]
SUB EDI,EBP
LEA ESI,[ESI]
NOP
LEA ESI,[EDX + EBP*0x1]
SUB ESP,0x4
LEA EAX,[ESI + EDI*0x1]
PUSH ECX
PUSH ESI
MOV ECX,EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0005d410
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,ESI
ADD ESP,0x10
SUB EAX,ESI
SAR EAX,0x2
CMP EBX,EAX
JLE 0x0005dec0
MOV EDI,dword ptr [ESP]
CMP EAX,EDI
CMOVG EAX,EDI
SUB ESP,0x4
PUSH ECX
LEA EAX,[ESI + EAX*0x4]
PUSH dword ptr [ESP + 0x14]
PUSH EAX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0005d410
ADD ESP,0x10
CMP dword ptr [ESP + 0x4],EBX
JLE 0x0005df6b
LEA EAX,[EBX + EBX*0x1]
MOV dword ptr [ESP],EAX
CMP dword ptr [ESP + 0x4],EAX
JGE 0x0005de30
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [ESP + 0x14]
JMP 0x0005de77
MOV EBX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x18]
CMP EBX,EAX
CMOVLE EAX,EBX
SUB ESP,0x4
PUSH dword ptr [ESP + 0x18]
LEA ECX,[EDX + EAX*0x4]
PUSH dword ptr [ESP + 0x14]
PUSH ECX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0005d410
ADD ESP,0x10
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x0005dc70
(translation_unit "void __regparm3 FUN_0005ddb0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}\n\n" (function_definition "void __regparm3 FUN_0005ddb0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0005ddb0(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar5 = param_2 - param_1;" (assignment_expression "iVar5 = param_2 - param_1" identifier = (binary_expression "param_2 - param_1" identifier - identifier)) ;) (expression_statement "iVar7 = iVar5 >> 2;" (assignment_expression "iVar7 = iVar5 >> 2" identifier = (binary_expression "iVar5 >> 2" identifier >> number_literal)) ;) (expression_statement "iVar1 = param_3 + iVar5;" (assignment_expression "iVar1 = param_3 + iVar5" identifier = (binary_expression "param_3 + iVar5" identifier + identifier)) ;) (expression_statement "iVar3 = param_1;" (assignment_expression "iVar3 = param_1" identifier = identifier) ;) (if_statement "if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }" if (parenthesized_expression "(iVar5 < 0x19)" ( (binary_expression "iVar5 < 0x19" identifier < number_literal) )) (compound_statement "{\n    FUN_0005dc70();\n    return;\n  }" { (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (do_statement "do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);" do (compound_statement "{\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  }" { (expression_statement "iVar3 = iVar3 + 0x1c;" (assignment_expression "iVar3 = iVar3 + 0x1c" identifier = (binary_expression "iVar3 + 0x1c" identifier + number_literal)) ;) (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(0x18 < param_2 - iVar3)" ( (binary_expression "0x18 < param_2 - iVar3" number_literal < (binary_expression "param_2 - iVar3" identifier - identifier)) )) ;) (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iVar5 < 0x1d) {\n    return;\n  }" if (parenthesized_expression "(iVar5 < 0x1d)" ( (binary_expression "iVar5 < 0x1d" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" identifier = number_literal) ;) (expression_statement "local_3c = 0xe;" (assignment_expression "local_3c = 0xe" identifier = number_literal) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (if_statement "if (iVar7 < 0xe) goto LAB_0005de77;" if (parenthesized_expression "(iVar7 < 0xe)" ( (binary_expression "iVar7 < 0xe" identifier < number_literal) )) (goto_statement "goto LAB_0005de77;" goto statement_identifier ;)) (do_statement "do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );" do (compound_statement "{\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  }" { (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" identifier = identifier) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (do_statement "do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);" do (compound_statement "{\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    }" { (expression_statement "iVar2 = iVar2 + iVar6 * 8;" (assignment_expression "iVar2 = iVar2 + iVar6 * 8" identifier = (binary_expression "iVar2 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal))) ;) (expression_statement "iVar3 = FUN_0005d5d0(iVar2,iVar3);" (assignment_expression "iVar3 = FUN_0005d5d0(iVar2,iVar3)" identifier = (call_expression "FUN_0005d5d0(iVar2,iVar3)" identifier (argument_list "(iVar2,iVar3)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(local_3c <= param_2 - iVar2 >> 2)" ( (binary_expression "local_3c <= param_2 - iVar2 >> 2" identifier <= (binary_expression "param_2 - iVar2 >> 2" (binary_expression "param_2 - iVar2" identifier - identifier) >> number_literal)) )) ;) (labeled_statement "LAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);" statement_identifier : (do_statement "do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);" do (compound_statement "{\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    }" { (expression_statement "iVar6 = iVar5 * 4;" (assignment_expression "iVar6 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "FUN_0005d5d0(param_2,iVar3);" (call_expression "FUN_0005d5d0(param_2,iVar3)" identifier (argument_list "(param_2,iVar3)" ( identifier , identifier ))) ;) (if_statement "if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }" if (parenthesized_expression "(iVar7 < iVar6)" ( (binary_expression "iVar7 < iVar6" identifier < identifier) )) (compound_statement "{\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }" { (if_statement "if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }" if (parenthesized_expression "(iVar7 <= local_3c)" ( (binary_expression "iVar7 <= local_3c" identifier <= identifier) )) (compound_statement "{\n          local_3c = iVar7;\n        }" { (expression_statement "local_3c = iVar7;" (assignment_expression "local_3c = iVar7" identifier = identifier) ;) })) (expression_statement "FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);" (call_expression "FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1)" identifier (argument_list "(param_3 + local_3c * 4,iVar1,param_1)" ( (binary_expression "param_3 + local_3c * 4" identifier + (binary_expression "local_3c * 4" identifier * number_literal)) , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" identifier = identifier) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (do_statement "do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);" do (compound_statement "{\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      }" { (expression_statement "iVar3 = iVar3 + iVar5 * 0x10;" (assignment_expression "iVar3 = iVar3 + iVar5 * 0x10" identifier = (binary_expression "iVar3 + iVar5 * 0x10" identifier + (binary_expression "iVar5 * 0x10" identifier * number_literal))) ;) (expression_statement "FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);" (call_expression "FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2)" identifier (argument_list "(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2)" ( (binary_expression "iVar3 + local_3c * 4 + iVar5 * -0x10" (binary_expression "iVar3 + local_3c * 4" identifier + (binary_expression "local_3c * 4" identifier * number_literal)) + (binary_expression "iVar5 * -0x10" identifier * number_literal)) , identifier , identifier ))) ;) (expression_statement "iVar4 = iVar1 - iVar3 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar3 >> 2" identifier = (binary_expression "iVar1 - iVar3 >> 2" (binary_expression "iVar1 - iVar3" identifier - identifier) >> number_literal)) ;) (expression_statement "iVar2 = local_20;" (assignment_expression "iVar2 = local_20" identifier = identifier) ;) }) while (parenthesized_expression "(iVar6 <= iVar4)" ( (binary_expression "iVar6 <= iVar4" identifier <= identifier) )) ;) (if_statement "if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }" if (parenthesized_expression "(local_3c < iVar4)" ( (binary_expression "local_3c < iVar4" identifier < identifier) )) (compound_statement "{\n        iVar4 = local_3c;\n      }" { (expression_statement "iVar4 = local_3c;" (assignment_expression "iVar4 = local_3c" identifier = identifier) ;) })) (expression_statement "FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);" (call_expression "FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20)" identifier (argument_list "(iVar3 + iVar4 * 4,iVar1,local_20)" ( (binary_expression "iVar3 + iVar4 * 4" identifier + (binary_expression "iVar4 * 4" identifier * number_literal)) , identifier , identifier ))) ;) (if_statement "if (iVar7 <= iVar6) {\n        return;\n      }" if (parenthesized_expression "(iVar7 <= iVar6)" ( (binary_expression "iVar7 <= iVar6" identifier <= identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_3c = iVar5 * 8;" (assignment_expression "local_3c = iVar5 * 8" identifier = (binary_expression "iVar5 * 8" identifier * number_literal)) ;) (expression_statement "iVar2 = iVar5 * -8;" (assignment_expression "iVar2 = iVar5 * -8" identifier = (binary_expression "iVar5 * -8" identifier * number_literal)) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0)" ( (binary_expression "SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0" (call_expression "SBORROW4(iVar7,local_3c)" identifier (argument_list "(iVar7,local_3c)" ( identifier , identifier ))) != (binary_expression "iVar7 + iVar2 < 0" (binary_expression "iVar7 + iVar2" identifier + identifier) < number_literal)) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __merge_sort_with_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,\n   std::vector<gold::Output_section*> >, gold::Output_section**,\n   __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::Target_powerpc<64,\n   false>::Sort_sections> > */\n\nvoid std::\n     __merge_sort_with_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n               (void)\n\n{\n  int iVar1;\n  int in_EAX;\n  int iVar2;\n  int iVar3;\n  Output_section **ppOVar4;\n  int iVar5;\n  Output_section **in_ECX;\n  int in_EDX;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar6 = in_EDX - in_EAX;\n  iVar7 = iVar6 >> 2;\n  iVar1 = (int)in_ECX + iVar6;\n  iVar2 = in_EAX;\n  if (iVar6 < 0x19) {\n    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();\n    return;\n  }\n  do {\n    iVar2 = iVar2 + 0x1c;\n    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();\n  } while (0x18 < in_EDX - iVar2);\n  __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n            ();\n  if (iVar6 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  ppOVar4 = in_ECX;\n  iVar2 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar3 = in_EAX;\n    ppOVar4 = in_ECX;\n    do {\n      iVar3 = iVar3 + iVar6 * 8;\n      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);\n      iVar2 = iVar6;\n    } while (local_3c <= in_EDX - iVar3 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);\n  } while( true );\n}\n\n" comment comment (declaration "void std::\n     __merge_sort_with_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n               (void)\n\n{\n  int iVar1;" primitive_type (ERROR "std::\n     __merge_sort_with_buffer<__gnu_cxx::__normal_iterator<gold::Output_section" identifier : : identifier < identifier : : identifier < identifier : : identifier) (pointer_declarator "**,_std::vector<gold::Output_section*>_" * (pointer_declarator "*,_std::vector<gold::Output_section*>_" * (ERROR ",_std::vector<gold::Output_section*>" , identifier : : identifier < identifier : : identifier * >) identifier)) (ERROR ">,_gold::Output_section**" > , (ERROR "_gold::Output_section" identifier : : identifier) * *) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::" identifier : : identifier : : identifier < ( identifier ) : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::Sort_sections>_>\n               (void)\n\n{\n  int" identifier > : : identifier > (function_declarator "_>\n               (void)" identifier (ERROR ">" >) (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) { primitive_type) identifier ;) (declaration "int in_EAX;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Output_section **ppOVar4;" type_identifier (pointer_declarator "**ppOVar4" * (pointer_declarator "*ppOVar4" * identifier)) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "Output_section **in_ECX;" type_identifier (pointer_declarator "**in_ECX" * (pointer_declarator "*in_ECX" * identifier)) ;) (declaration "int in_EDX;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar6 = in_EDX - in_EAX;" (assignment_expression "iVar6 = in_EDX - in_EAX" identifier = (binary_expression "in_EDX - in_EAX" identifier - identifier)) ;) (expression_statement "iVar7 = iVar6 >> 2;" (assignment_expression "iVar7 = iVar6 >> 2" identifier = (binary_expression "iVar6 >> 2" identifier >> number_literal)) ;) (expression_statement "iVar1 = (int)in_ECX + iVar6;" (assignment_expression "iVar1 = (int)in_ECX + iVar6" identifier = (binary_expression "(int)in_ECX + iVar6" (cast_expression "(int)in_ECX" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "iVar2 = in_EAX;" (assignment_expression "iVar2 = in_EAX" identifier = identifier) ;) (if_statement "if (iVar6 < 0x19) {\n    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();\n    return;\n  }" if (parenthesized_expression "(iVar6 < 0x19)" ( (binary_expression "iVar6 < 0x19" identifier < number_literal) )) (compound_statement "{\n    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();\n    return;\n  }" { (expression_statement "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();" (comma_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ()" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold" (binary_expression "__insertion_sort<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) , (binary_expression "_false>::Sort_sections>_>\n              ()" (binary_expression "_false>::Sort_sections>_" (binary_expression "_false>::Sort_sections" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "()" ( identifier )))) ;) (return_statement "return;" return ;) })) (do_statement "do {\n    iVar2 = iVar2 + 0x1c;\n    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();\n  } while (0x18 < in_EDX - iVar2);" do (compound_statement "{\n    iVar2 = iVar2 + 0x1c;\n    __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();\n  }" { (expression_statement "iVar2 = iVar2 + 0x1c;" (assignment_expression "iVar2 = iVar2 + 0x1c" identifier = (binary_expression "iVar2 + 0x1c" identifier + number_literal)) ;) (expression_statement "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ();" (comma_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n              ()" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold" (binary_expression "__insertion_sort<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) , (binary_expression "_false>::Sort_sections>_>\n              ()" (binary_expression "_false>::Sort_sections>_" (binary_expression "_false>::Sort_sections" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "()" ( identifier )))) ;) }) while (parenthesized_expression "(0x18 < in_EDX - iVar2)" ( (binary_expression "0x18 < in_EDX - iVar2" number_literal < (binary_expression "in_EDX - iVar2" identifier - identifier)) )) ;) (ERROR "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n            ();\n  if (iVar6 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  ppOVar4 = in_ECX;\n  iVar2 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar3 = in_EAX;\n    ppOVar4 = in_ECX;\n    do {\n      iVar3 = iVar3 + iVar6 * 8;\n      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);\n      iVar2 = iVar6;\n    } while (local_3c <= in_EDX - iVar3 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);\n  } while( true );\n}" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n            ();\n  if (iVar6 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  ppOVar4 = in_ECX;\n  iVar2 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar3 = in_EAX;\n    ppOVar4 = in_ECX;\n    do {\n      iVar3 = iVar3 + iVar6 * 8;\n      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);\n      iVar2 = iVar6;\n    } while (local_3c <= in_EDX - iVar3 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);\n  } while( true )" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__insertion_sort<__gnu_cxx::__normal_iterator<gold" (binary_expression "__insertion_sort<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) (ERROR ",_false" , identifier) > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "();\n  if (iVar6 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  ppOVar4 = in_ECX;\n  iVar2 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar3 = in_EAX;\n    ppOVar4 = in_ECX;\n    do {\n      iVar3 = iVar3 + iVar6 * 8;\n      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);\n      iVar2 = iVar6;\n    } while (local_3c <= in_EDX - iVar3 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);\n  } while( true )" ( (ERROR ");\n  if (iVar6 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  ppOVar4 = in_ECX;\n  iVar2 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do" ) ; if (parenthesized_expression "(iVar6 < 0x1d)" ( (binary_expression "iVar6 < 0x1d" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }) (assignment_expression "iVar6 = 7" identifier = number_literal) ; (assignment_expression "local_3c = 0xe" identifier = number_literal) ; (assignment_expression "ppOVar4 = in_ECX" identifier = identifier) ; (call_expression "iVar2 = iVar6;\n  if (iVar7 < 0xe)" (assignment_expression "iVar2 = iVar6" identifier = identifier) (ERROR ";\n  if" ; if) (argument_list "(iVar7 < 0xe)" ( (binary_expression "iVar7 < 0xe" identifier < number_literal) ))) identifier identifier ; do) (compound_statement "{\n    iVar3 = in_EAX;\n    ppOVar4 = in_ECX;\n    do {\n      iVar3 = iVar3 + iVar6 * 8;\n      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);\n      iVar2 = iVar6;\n    } while (local_3c <= in_EDX - iVar3 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);\n  }" { (expression_statement "iVar3 = in_EAX;" (assignment_expression "iVar3 = in_EAX" identifier = identifier) ;) (expression_statement "ppOVar4 = in_ECX;" (assignment_expression "ppOVar4 = in_ECX" identifier = identifier) ;) (do_statement "do {\n      iVar3 = iVar3 + iVar6 * 8;\n      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);\n      iVar2 = iVar6;\n    } while (local_3c <= in_EDX - iVar3 >> 2);" do (compound_statement "{\n      iVar3 = iVar3 + iVar6 * 8;\n      ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);\n      iVar2 = iVar6;\n    }" { (expression_statement "iVar3 = iVar3 + iVar6 * 8;" (assignment_expression "iVar3 = iVar3 + iVar6 * 8" identifier = (binary_expression "iVar3 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal))) ;) (expression_statement "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4);" (comma_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                          (iVar3,ppOVar4)" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "ppOVar4 = __move_merge<__gnu_cxx::__normal_iterator<gold" (assignment_expression "ppOVar4 = __move_merge<__gnu_cxx" identifier = (binary_expression "__move_merge<__gnu_cxx" identifier < identifier)) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,___gnu_cxx" * (ERROR "," ,) identifier)) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) , (binary_expression "_false>::Sort_sections>_>\n                          (iVar3,ppOVar4)" (binary_expression "_false>::Sort_sections>_" (binary_expression "_false>::Sort_sections" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "(iVar3,ppOVar4)" ( (comma_expression "iVar3,ppOVar4" identifier , identifier) )))) ;) (expression_statement "iVar2 = iVar6;" (assignment_expression "iVar2 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(local_3c <= in_EDX - iVar3 >> 2)" ( (binary_expression "local_3c <= in_EDX - iVar3 >> 2" identifier <= (binary_expression "in_EDX - iVar3 >> 2" (binary_expression "in_EDX - iVar3" identifier - identifier) >> number_literal)) )) ;) (labeled_statement "LAB_0005de77:\n    do {\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);" statement_identifier : (do_statement "do {\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);" do (compound_statement "{\n      iVar6 = iVar2 * 4;\n      __move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);\n      iVar3 = in_EAX;\n      ppOVar4 = in_ECX;\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }\n      do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);\n      if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }\n      __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar2 * 8;\n      iVar3 = iVar2 * -8;\n      ppOVar4 = in_ECX;\n      iVar2 = iVar6;\n    }" { (expression_statement "iVar6 = iVar2 * 4;" (assignment_expression "iVar6 = iVar2 * 4" identifier = (binary_expression "iVar2 * 4" identifier * number_literal)) ;) (expression_statement "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4);" (comma_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (in_EDX,ppOVar4)" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,___gnu_cxx" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__move_merge<__gnu_cxx::__normal_iterator<gold" (binary_expression "__move_merge<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,___gnu_cxx" * (ERROR "," ,) identifier)) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) , (binary_expression "_false>::Sort_sections>_>\n                (in_EDX,ppOVar4)" (binary_expression "_false>::Sort_sections>_" (binary_expression "_false>::Sort_sections" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "(in_EDX,ppOVar4)" ( (comma_expression "in_EDX,ppOVar4" identifier , identifier) )))) ;) (expression_statement "iVar3 = in_EAX;" (assignment_expression "iVar3 = in_EAX" identifier = identifier) ;) (expression_statement "ppOVar4 = in_ECX;" (assignment_expression "ppOVar4 = in_ECX" identifier = identifier) ;) (if_statement "if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }" if (parenthesized_expression "(iVar7 < iVar6)" ( (binary_expression "iVar7 < iVar6" identifier < identifier) )) (compound_statement "{\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);\n        return;\n      }" { (if_statement "if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }" if (parenthesized_expression "(iVar7 <= local_3c)" ( (binary_expression "iVar7 <= local_3c" identifier <= identifier) )) (compound_statement "{\n          local_3c = iVar7;\n        }" { (expression_statement "local_3c = iVar7;" (assignment_expression "local_3c = iVar7" identifier = identifier) ;) })) (expression_statement "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX);" (comma_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX)" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx" (binary_expression "__move_merge<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,___gnu_cxx" * (ERROR "," ,) identifier)) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) , (binary_expression "_false>::Sort_sections>_>\n                  (in_ECX + local_3c,iVar1,in_EAX)" (binary_expression "_false>::Sort_sections>_" (binary_expression "_false>::Sort_sections" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "(in_ECX + local_3c,iVar1,in_EAX)" ( (comma_expression "in_ECX + local_3c,iVar1,in_EAX" (binary_expression "in_ECX + local_3c" identifier + identifier) , (comma_expression "iVar1,in_EAX" identifier , identifier)) )))) ;) (return_statement "return;" return ;) })) (do_statement "do {\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      } while (iVar6 <= iVar5);" do (compound_statement "{\n        ppOVar4 = ppOVar4 + iVar2 * 4;\n        __move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);\n        iVar5 = iVar1 - (int)ppOVar4 >> 2;\n        iVar3 = local_20;\n      }" { (expression_statement "ppOVar4 = ppOVar4 + iVar2 * 4;" (assignment_expression "ppOVar4 = ppOVar4 + iVar2 * 4" identifier = (binary_expression "ppOVar4 + iVar2 * 4" identifier + (binary_expression "iVar2 * 4" identifier * number_literal))) ;) (expression_statement "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3);" (comma_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3)" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx" (binary_expression "__move_merge<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,___gnu_cxx" * (ERROR "," ,) identifier)) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) , (binary_expression "_false>::Sort_sections>_>\n                  (ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3)" (binary_expression "_false>::Sort_sections>_" (binary_expression "_false>::Sort_sections" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "(ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3)" ( (comma_expression "ppOVar4 + iVar2 * -4 + local_3c,ppOVar4,iVar3" (binary_expression "ppOVar4 + iVar2 * -4 + local_3c" (binary_expression "ppOVar4 + iVar2 * -4" identifier + (binary_expression "iVar2 * -4" identifier * number_literal)) + identifier) , (comma_expression "ppOVar4,iVar3" identifier , identifier)) )))) ;) (expression_statement "iVar5 = iVar1 - (int)ppOVar4 >> 2;" (assignment_expression "iVar5 = iVar1 - (int)ppOVar4 >> 2" identifier = (binary_expression "iVar1 - (int)ppOVar4 >> 2" (binary_expression "iVar1 - (int)ppOVar4" identifier - (cast_expression "(int)ppOVar4" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar3 = local_20;" (assignment_expression "iVar3 = local_20" identifier = identifier) ;) }) while (parenthesized_expression "(iVar6 <= iVar5)" ( (binary_expression "iVar6 <= iVar5" identifier <= identifier) )) ;) (if_statement "if (local_3c < iVar5) {\n        iVar5 = local_3c;\n      }" if (parenthesized_expression "(local_3c < iVar5)" ( (binary_expression "local_3c < iVar5" identifier < identifier) )) (compound_statement "{\n        iVar5 = local_3c;\n      }" { (expression_statement "iVar5 = local_3c;" (assignment_expression "iVar5 = local_3c" identifier = identifier) ;) })) (expression_statement "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20);" (comma_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20)" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx::__ops::_Iter_comp_iter<(anonymous_namespace)" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,___gnu_cxx" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx::__normal_iterator<gold" (binary_expression "__move_merge<gold::Output_section**,___gnu_cxx" (binary_expression "__move_merge<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,___gnu_cxx" * (ERROR "," ,) identifier)) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > (ERROR "," ,) identifier) (ERROR "::__ops::_Iter_comp_iter" : : identifier : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Target_powerpc" : : identifier) < number_literal) , (binary_expression "_false>::Sort_sections>_>\n                (ppOVar4 + iVar5,iVar1,local_20)" (binary_expression "_false>::Sort_sections>_" (binary_expression "_false>::Sort_sections" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "(ppOVar4 + iVar5,iVar1,local_20)" ( (comma_expression "ppOVar4 + iVar5,iVar1,local_20" (binary_expression "ppOVar4 + iVar5" identifier + identifier) , (comma_expression "iVar1,local_20" identifier , identifier)) )))) ;) (if_statement "if (iVar7 <= iVar6) {\n        return;\n      }" if (parenthesized_expression "(iVar7 <= iVar6)" ( (binary_expression "iVar7 <= iVar6" identifier <= identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_3c = iVar2 * 8;" (assignment_expression "local_3c = iVar2 * 8" identifier = (binary_expression "iVar2 * 8" identifier * number_literal)) ;) (expression_statement "iVar3 = iVar2 * -8;" (assignment_expression "iVar3 = iVar2 * -8" identifier = (binary_expression "iVar2 * -8" identifier * number_literal)) ;) (expression_statement "ppOVar4 = in_ECX;" (assignment_expression "ppOVar4 = in_ECX" identifier = identifier) ;) (expression_statement "iVar2 = iVar6;" (assignment_expression "iVar2 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0)" ( (binary_expression "SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0" (call_expression "SBORROW4(iVar7,local_3c)" identifier (argument_list "(iVar7,local_3c)" ( identifier , identifier ))) != (binary_expression "iVar7 + iVar3 < 0" (binary_expression "iVar7 + iVar3" identifier + identifier) < number_literal)) )) ;)) }) (ERROR "while( true" while ( true) ))) ; }))
(translation_unit "void __regparm3 FUN_0005ddb0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}\n\n" (function_definition "void __regparm3 FUN_0005ddb0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0005ddb0(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar5 = param_2 - param_1;" (assignment_expression "iVar5 = param_2 - param_1" identifier = (binary_expression "param_2 - param_1" identifier - identifier)) ;) (expression_statement "iVar7 = iVar5 >> 2;" (assignment_expression "iVar7 = iVar5 >> 2" identifier = (binary_expression "iVar5 >> 2" identifier >> number_literal)) ;) (expression_statement "iVar1 = param_3 + iVar5;" (assignment_expression "iVar1 = param_3 + iVar5" identifier = (binary_expression "param_3 + iVar5" identifier + identifier)) ;) (expression_statement "iVar3 = param_1;" (assignment_expression "iVar3 = param_1" identifier = identifier) ;) (if_statement "if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }" if (parenthesized_expression "(iVar5 < 0x19)" ( (binary_expression "iVar5 < 0x19" identifier < number_literal) )) (compound_statement "{\n    FUN_0005dc70();\n    return;\n  }" { (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (do_statement "do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);" do (compound_statement "{\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  }" { (expression_statement "iVar3 = iVar3 + 0x1c;" (assignment_expression "iVar3 = iVar3 + 0x1c" identifier = (binary_expression "iVar3 + 0x1c" identifier + number_literal)) ;) (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(0x18 < param_2 - iVar3)" ( (binary_expression "0x18 < param_2 - iVar3" number_literal < (binary_expression "param_2 - iVar3" identifier - identifier)) )) ;) (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" identifier (argument_list "()" ( ))) ;) (if_statement "if (iVar5 < 0x1d) {\n    return;\n  }" if (parenthesized_expression "(iVar5 < 0x1d)" ( (binary_expression "iVar5 < 0x1d" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" identifier = number_literal) ;) (expression_statement "local_3c = 0xe;" (assignment_expression "local_3c = 0xe" identifier = number_literal) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (if_statement "if (iVar7 < 0xe) goto LAB_0005de77;" if (parenthesized_expression "(iVar7 < 0xe)" ( (binary_expression "iVar7 < 0xe" identifier < number_literal) )) (goto_statement "goto LAB_0005de77;" goto statement_identifier ;)) (do_statement "do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );" do (compound_statement "{\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  }" { (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" identifier = identifier) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (do_statement "do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);" do (compound_statement "{\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    }" { (expression_statement "iVar2 = iVar2 + iVar6 * 8;" (assignment_expression "iVar2 = iVar2 + iVar6 * 8" identifier = (binary_expression "iVar2 + iVar6 * 8" identifier + (binary_expression "iVar6 * 8" identifier * number_literal))) ;) (expression_statement "iVar3 = FUN_0005d5d0(iVar2,iVar3);" (assignment_expression "iVar3 = FUN_0005d5d0(iVar2,iVar3)" identifier = (call_expression "FUN_0005d5d0(iVar2,iVar3)" identifier (argument_list "(iVar2,iVar3)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(local_3c <= param_2 - iVar2 >> 2)" ( (binary_expression "local_3c <= param_2 - iVar2 >> 2" identifier <= (binary_expression "param_2 - iVar2 >> 2" (binary_expression "param_2 - iVar2" identifier - identifier) >> number_literal)) )) ;) (labeled_statement "LAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);" statement_identifier : (do_statement "do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);" do (compound_statement "{\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    }" { (expression_statement "iVar6 = iVar5 * 4;" (assignment_expression "iVar6 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "FUN_0005d5d0(param_2,iVar3);" (call_expression "FUN_0005d5d0(param_2,iVar3)" identifier (argument_list "(param_2,iVar3)" ( identifier , identifier ))) ;) (if_statement "if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }" if (parenthesized_expression "(iVar7 < iVar6)" ( (binary_expression "iVar7 < iVar6" identifier < identifier) )) (compound_statement "{\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }" { (if_statement "if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }" if (parenthesized_expression "(iVar7 <= local_3c)" ( (binary_expression "iVar7 <= local_3c" identifier <= identifier) )) (compound_statement "{\n          local_3c = iVar7;\n        }" { (expression_statement "local_3c = iVar7;" (assignment_expression "local_3c = iVar7" identifier = identifier) ;) })) (expression_statement "FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);" (call_expression "FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1)" identifier (argument_list "(param_3 + local_3c * 4,iVar1,param_1)" ( (binary_expression "param_3 + local_3c * 4" identifier + (binary_expression "local_3c * 4" identifier * number_literal)) , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" identifier = identifier) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (do_statement "do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);" do (compound_statement "{\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      }" { (expression_statement "iVar3 = iVar3 + iVar5 * 0x10;" (assignment_expression "iVar3 = iVar3 + iVar5 * 0x10" identifier = (binary_expression "iVar3 + iVar5 * 0x10" identifier + (binary_expression "iVar5 * 0x10" identifier * number_literal))) ;) (expression_statement "FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);" (call_expression "FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2)" identifier (argument_list "(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2)" ( (binary_expression "iVar3 + local_3c * 4 + iVar5 * -0x10" (binary_expression "iVar3 + local_3c * 4" identifier + (binary_expression "local_3c * 4" identifier * number_literal)) + (binary_expression "iVar5 * -0x10" identifier * number_literal)) , identifier , identifier ))) ;) (expression_statement "iVar4 = iVar1 - iVar3 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar3 >> 2" identifier = (binary_expression "iVar1 - iVar3 >> 2" (binary_expression "iVar1 - iVar3" identifier - identifier) >> number_literal)) ;) (expression_statement "iVar2 = local_20;" (assignment_expression "iVar2 = local_20" identifier = identifier) ;) }) while (parenthesized_expression "(iVar6 <= iVar4)" ( (binary_expression "iVar6 <= iVar4" identifier <= identifier) )) ;) (if_statement "if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }" if (parenthesized_expression "(local_3c < iVar4)" ( (binary_expression "local_3c < iVar4" identifier < identifier) )) (compound_statement "{\n        iVar4 = local_3c;\n      }" { (expression_statement "iVar4 = local_3c;" (assignment_expression "iVar4 = local_3c" identifier = identifier) ;) })) (expression_statement "FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);" (call_expression "FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20)" identifier (argument_list "(iVar3 + iVar4 * 4,iVar1,local_20)" ( (binary_expression "iVar3 + iVar4 * 4" identifier + (binary_expression "iVar4 * 4" identifier * number_literal)) , identifier , identifier ))) ;) (if_statement "if (iVar7 <= iVar6) {\n        return;\n      }" if (parenthesized_expression "(iVar7 <= iVar6)" ( (binary_expression "iVar7 <= iVar6" identifier <= identifier) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "local_3c = iVar5 * 8;" (assignment_expression "local_3c = iVar5 * 8" identifier = (binary_expression "iVar5 * 8" identifier * number_literal)) ;) (expression_statement "iVar2 = iVar5 * -8;" (assignment_expression "iVar2 = iVar5 * -8" identifier = (binary_expression "iVar5 * -8" identifier * number_literal)) ;) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" identifier = identifier) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) }) while (parenthesized_expression "(SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0)" ( (binary_expression "SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0" (call_expression "SBORROW4(iVar7,local_3c)" identifier (argument_list "(iVar7,local_3c)" ( identifier , identifier ))) != (binary_expression "iVar7 + iVar2 < 0" (binary_expression "iVar7 + iVar2" identifier + identifier) < number_literal)) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - IDENT)) )) ;) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= (binary_expression (binary_expression IDENT - IDENT) >> LIT)) )) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT , IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + (binary_expression IDENT * LIT)) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (binary_expression IDENT * LIT)) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (binary_expression (binary_expression IDENT + IDENT) < LIT)) )) ;)) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void __regparm3 FUN_0005ddb0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0005ddb0(int param_1,int param_2,int param_3)" (identifier "FUN_0005ddb0") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int local_3c;\n  int local_20;\n  \n  iVar5 = param_2 - param_1;\n  iVar7 = iVar5 >> 2;\n  iVar1 = param_3 + iVar5;\n  iVar3 = param_1;\n  if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }\n  do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);\n  FUN_0005dc70();\n  if (iVar5 < 0x1d) {\n    return;\n  }\n  iVar6 = 7;\n  local_3c = 0xe;\n  iVar3 = param_3;\n  iVar5 = iVar6;\n  if (iVar7 < 0xe) goto LAB_0005de77;\n  do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "iVar5 = param_2 - param_1;" (assignment_expression "iVar5 = param_2 - param_1" (identifier "iVar5") (= "=") (binary_expression "param_2 - param_1" (identifier "param_2") (- "-") (identifier "param_1"))) (; ";")) (expression_statement "iVar7 = iVar5 >> 2;" (assignment_expression "iVar7 = iVar5 >> 2" (identifier "iVar7") (= "=") (binary_expression "iVar5 >> 2" (identifier "iVar5") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "iVar1 = param_3 + iVar5;" (assignment_expression "iVar1 = param_3 + iVar5" (identifier "iVar1") (= "=") (binary_expression "param_3 + iVar5" (identifier "param_3") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "iVar3 = param_1;" (assignment_expression "iVar3 = param_1" (identifier "iVar3") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (iVar5 < 0x19) {\n    FUN_0005dc70();\n    return;\n  }" (if "if") (parenthesized_expression "(iVar5 < 0x19)" (( "(") (binary_expression "iVar5 < 0x19" (identifier "iVar5") (< "<") (number_literal "0x19")) () ")")) (compound_statement "{\n    FUN_0005dc70();\n    return;\n  }" ({ "{") (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" (identifier "FUN_0005dc70") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  } while (0x18 < param_2 - iVar3);" (do "do") (compound_statement "{\n    iVar3 = iVar3 + 0x1c;\n    FUN_0005dc70();\n  }" ({ "{") (expression_statement "iVar3 = iVar3 + 0x1c;" (assignment_expression "iVar3 = iVar3 + 0x1c" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" (identifier "FUN_0005dc70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0x18 < param_2 - iVar3)" (( "(") (binary_expression "0x18 < param_2 - iVar3" (number_literal "0x18") (< "<") (binary_expression "param_2 - iVar3" (identifier "param_2") (- "-") (identifier "iVar3"))) () ")")) (; ";")) (expression_statement "FUN_0005dc70();" (call_expression "FUN_0005dc70()" (identifier "FUN_0005dc70") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar5 < 0x1d) {\n    return;\n  }" (if "if") (parenthesized_expression "(iVar5 < 0x1d)" (( "(") (binary_expression "iVar5 < 0x1d" (identifier "iVar5") (< "<") (number_literal "0x1d")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" (identifier "iVar6") (= "=") (number_literal "7")) (; ";")) (expression_statement "local_3c = 0xe;" (assignment_expression "local_3c = 0xe" (identifier "local_3c") (= "=") (number_literal "0xe")) (; ";")) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" (identifier "iVar3") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" (identifier "iVar5") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar7 < 0xe) goto LAB_0005de77;" (if "if") (parenthesized_expression "(iVar7 < 0xe)" (( "(") (binary_expression "iVar7 < 0xe" (identifier "iVar7") (< "<") (number_literal "0xe")) () ")")) (goto_statement "goto LAB_0005de77;" (goto "goto") (statement_identifier "LAB_0005de77") (; ";"))) (do_statement "do {\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  } while( true );" (do "do") (compound_statement "{\n    iVar2 = param_1;\n    iVar3 = param_3;\n    do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);\nLAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);\n  }" ({ "{") (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" (identifier "iVar2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" (identifier "iVar3") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    } while (local_3c <= param_2 - iVar2 >> 2);" (do "do") (compound_statement "{\n      iVar2 = iVar2 + iVar6 * 8;\n      iVar3 = FUN_0005d5d0(iVar2,iVar3);\n      iVar5 = iVar6;\n    }" ({ "{") (expression_statement "iVar2 = iVar2 + iVar6 * 8;" (assignment_expression "iVar2 = iVar2 + iVar6 * 8" (identifier "iVar2") (= "=") (binary_expression "iVar2 + iVar6 * 8" (identifier "iVar2") (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8")))) (; ";")) (expression_statement "iVar3 = FUN_0005d5d0(iVar2,iVar3);" (assignment_expression "iVar3 = FUN_0005d5d0(iVar2,iVar3)" (identifier "iVar3") (= "=") (call_expression "FUN_0005d5d0(iVar2,iVar3)" (identifier "FUN_0005d5d0") (argument_list "(iVar2,iVar3)" (( "(") (identifier "iVar2") (, ",") (identifier "iVar3") () ")")))) (; ";")) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" (identifier "iVar5") (= "=") (identifier "iVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_3c <= param_2 - iVar2 >> 2)" (( "(") (binary_expression "local_3c <= param_2 - iVar2 >> 2" (identifier "local_3c") (<= "<=") (binary_expression "param_2 - iVar2 >> 2" (binary_expression "param_2 - iVar2" (identifier "param_2") (- "-") (identifier "iVar2")) (>> ">>") (number_literal "2"))) () ")")) (; ";")) (labeled_statement "LAB_0005de77:\n    do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);" (statement_identifier "LAB_0005de77") (: ":") (do_statement "do {\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);" (do "do") (compound_statement "{\n      iVar6 = iVar5 * 4;\n      FUN_0005d5d0(param_2,iVar3);\n      if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }\n      iVar2 = param_1;\n      iVar3 = param_3;\n      do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);\n      if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }\n      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);\n      if (iVar7 <= iVar6) {\n        return;\n      }\n      local_3c = iVar5 * 8;\n      iVar2 = iVar5 * -8;\n      iVar3 = param_3;\n      iVar5 = iVar6;\n    }" ({ "{") (expression_statement "iVar6 = iVar5 * 4;" (assignment_expression "iVar6 = iVar5 * 4" (identifier "iVar6") (= "=") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) (; ";")) (expression_statement "FUN_0005d5d0(param_2,iVar3);" (call_expression "FUN_0005d5d0(param_2,iVar3)" (identifier "FUN_0005d5d0") (argument_list "(param_2,iVar3)" (( "(") (identifier "param_2") (, ",") (identifier "iVar3") () ")"))) (; ";")) (if_statement "if (iVar7 < iVar6) {\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }" (if "if") (parenthesized_expression "(iVar7 < iVar6)" (( "(") (binary_expression "iVar7 < iVar6" (identifier "iVar7") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n        if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }\n        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);\n        return;\n      }" ({ "{") (if_statement "if (iVar7 <= local_3c) {\n          local_3c = iVar7;\n        }" (if "if") (parenthesized_expression "(iVar7 <= local_3c)" (( "(") (binary_expression "iVar7 <= local_3c" (identifier "iVar7") (<= "<=") (identifier "local_3c")) () ")")) (compound_statement "{\n          local_3c = iVar7;\n        }" ({ "{") (expression_statement "local_3c = iVar7;" (assignment_expression "local_3c = iVar7" (identifier "local_3c") (= "=") (identifier "iVar7")) (; ";")) (} "}"))) (expression_statement "FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);" (call_expression "FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1)" (identifier "FUN_0005d410") (argument_list "(param_3 + local_3c * 4,iVar1,param_1)" (( "(") (binary_expression "param_3 + local_3c * 4" (identifier "param_3") (+ "+") (binary_expression "local_3c * 4" (identifier "local_3c") (* "*") (number_literal "4"))) (, ",") (identifier "iVar1") (, ",") (identifier "param_1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar2 = param_1;" (assignment_expression "iVar2 = param_1" (identifier "iVar2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" (identifier "iVar3") (= "=") (identifier "param_3")) (; ";")) (do_statement "do {\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      } while (iVar6 <= iVar4);" (do "do") (compound_statement "{\n        iVar3 = iVar3 + iVar5 * 0x10;\n        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);\n        iVar4 = iVar1 - iVar3 >> 2;\n        iVar2 = local_20;\n      }" ({ "{") (expression_statement "iVar3 = iVar3 + iVar5 * 0x10;" (assignment_expression "iVar3 = iVar3 + iVar5 * 0x10" (identifier "iVar3") (= "=") (binary_expression "iVar3 + iVar5 * 0x10" (identifier "iVar3") (+ "+") (binary_expression "iVar5 * 0x10" (identifier "iVar5") (* "*") (number_literal "0x10")))) (; ";")) (expression_statement "FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);" (call_expression "FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2)" (identifier "FUN_0005d410") (argument_list "(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2)" (( "(") (binary_expression "iVar3 + local_3c * 4 + iVar5 * -0x10" (binary_expression "iVar3 + local_3c * 4" (identifier "iVar3") (+ "+") (binary_expression "local_3c * 4" (identifier "local_3c") (* "*") (number_literal "4"))) (+ "+") (binary_expression "iVar5 * -0x10" (identifier "iVar5") (* "*") (number_literal "-0x10"))) (, ",") (identifier "iVar3") (, ",") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "iVar4 = iVar1 - iVar3 >> 2;" (assignment_expression "iVar4 = iVar1 - iVar3 >> 2" (identifier "iVar4") (= "=") (binary_expression "iVar1 - iVar3 >> 2" (binary_expression "iVar1 - iVar3" (identifier "iVar1") (- "-") (identifier "iVar3")) (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "iVar2 = local_20;" (assignment_expression "iVar2 = local_20" (identifier "iVar2") (= "=") (identifier "local_20")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 <= iVar4)" (( "(") (binary_expression "iVar6 <= iVar4" (identifier "iVar6") (<= "<=") (identifier "iVar4")) () ")")) (; ";")) (if_statement "if (local_3c < iVar4) {\n        iVar4 = local_3c;\n      }" (if "if") (parenthesized_expression "(local_3c < iVar4)" (( "(") (binary_expression "local_3c < iVar4" (identifier "local_3c") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n        iVar4 = local_3c;\n      }" ({ "{") (expression_statement "iVar4 = local_3c;" (assignment_expression "iVar4 = local_3c" (identifier "iVar4") (= "=") (identifier "local_3c")) (; ";")) (} "}"))) (expression_statement "FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);" (call_expression "FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20)" (identifier "FUN_0005d410") (argument_list "(iVar3 + iVar4 * 4,iVar1,local_20)" (( "(") (binary_expression "iVar3 + iVar4 * 4" (identifier "iVar3") (+ "+") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) (, ",") (identifier "iVar1") (, ",") (identifier "local_20") () ")"))) (; ";")) (if_statement "if (iVar7 <= iVar6) {\n        return;\n      }" (if "if") (parenthesized_expression "(iVar7 <= iVar6)" (( "(") (binary_expression "iVar7 <= iVar6" (identifier "iVar7") (<= "<=") (identifier "iVar6")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_3c = iVar5 * 8;" (assignment_expression "local_3c = iVar5 * 8" (identifier "local_3c") (= "=") (binary_expression "iVar5 * 8" (identifier "iVar5") (* "*") (number_literal "8"))) (; ";")) (expression_statement "iVar2 = iVar5 * -8;" (assignment_expression "iVar2 = iVar5 * -8" (identifier "iVar2") (= "=") (binary_expression "iVar5 * -8" (identifier "iVar5") (* "*") (number_literal "-8"))) (; ";")) (expression_statement "iVar3 = param_3;" (assignment_expression "iVar3 = param_3" (identifier "iVar3") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" (identifier "iVar5") (= "=") (identifier "iVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0)" (( "(") (binary_expression "SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0" (call_expression "SBORROW4(iVar7,local_3c)" (identifier "SBORROW4") (argument_list "(iVar7,local_3c)" (( "(") (identifier "iVar7") (, ",") (identifier "local_3c") () ")"))) (!= "!=") (binary_expression "iVar7 + iVar2 < 0" (binary_expression "iVar7 + iVar2" (identifier "iVar7") (+ "+") (identifier "iVar2")) (< "<") (number_literal "0"))) () ")")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __merge_sort_with_buffer<__gnu_cxx::__normal_iterator<gold::Output_section**,
   std::vector<gold::Output_section*> >, gold::Output_section**,
   __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::Target_powerpc<64,
   false>::Sort_sections> > */

void std::
     __merge_sort_with_buffer<var_5::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,_gold::type_1**,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
               (void)

{
  int iVar1;
  int var_2;
  int var_11;
  int iVar3;
  type_1 **ppOVar4;
  int iVar5;
  type_1 **in_ECX;
  int var_1;
  int var_3;
  int iVar7;
  int local_3c;
  int local_20;
  
  var_3 = var_1 - var_2;
  iVar7 = var_3 >> 2;
  iVar1 = (int)in_ECX + var_3;
  var_11 = var_2;
  if (var_3 < 0x19) {
    var_4<var_5::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
              ();
    return;
  }
  do {
    var_11 = var_11 + 0x1c;
    var_4<var_5::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
              ();
  } while (0x18 < var_1 - var_11);
  var_4<var_5::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
            ();
  if (var_3 < 0x1d) {
    return;
  }
  var_3 = 7;
  local_3c = 0xe;
  ppOVar4 = in_ECX;
  var_11 = var_3;
  if (iVar7 < 0xe) goto LAB_0005de77;
  do {
    iVar3 = var_2;
    ppOVar4 = in_ECX;
    do {
      iVar3 = iVar3 + var_3 * 8;
      ppOVar4 = __move_merge<var_5::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,_gold::type_1**,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
                          (iVar3,ppOVar4);
      var_11 = var_3;
    } while (local_3c <= var_1 - iVar3 >> 2);
LAB_0005de77:
    do {
      var_3 = var_11 * 4;
      __move_merge<var_5::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,_gold::type_1**,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
                (var_1,ppOVar4);
      iVar3 = var_2;
      ppOVar4 = in_ECX;
      if (iVar7 < var_3) {
        if (iVar7 <= local_3c) {
          local_3c = iVar7;
        }
        __move_merge<var_6::type_1**,var_8::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
                  (in_ECX + local_3c,iVar1,var_2);
        return;
      }
      do {
        ppOVar4 = ppOVar4 + var_11 * 4;
        __move_merge<var_6::type_1**,var_8::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
                  (ppOVar4 + var_11 * -4 + local_3c,ppOVar4,iVar3);
        iVar5 = iVar1 - (int)ppOVar4 >> 2;
        iVar3 = local_20;
      } while (var_3 <= iVar5);
      if (local_3c < iVar5) {
        iVar5 = local_3c;
      }
      __move_merge<var_6::type_1**,var_8::__normal_iterator<var_6::type_1**,_std::vector<var_6::type_1*>var_7>,var_8::__ops::_Iter_comp_iter<(anonymous_namespace)::Target_powerpc<64,var_9>::var_10>var_7>
                (ppOVar4 + iVar5,iVar1,local_20);
      if (iVar7 <= var_3) {
        return;
      }
      local_3c = var_11 * 8;
      iVar3 = var_11 * -8;
      ppOVar4 = in_ECX;
      var_11 = var_3;
    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar3 < 0);
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (identifier))))) (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (identifier) (identifier)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))) condition: (parenthesized_expression (true))))))

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

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int local_3c;
  int local_20;
  
  iVar5 = param_2 - param_1;
  iVar7 = iVar5 >> 2;
  iVar1 = param_3 + iVar5;
  iVar3 = param_1;
  if (iVar5 < 0x19) {
    FUN_0005dc70();
    return;
  }
  do {
    iVar3 = iVar3 + 0x1c;
    FUN_0005dc70();
  } while (0x18 < param_2 - iVar3);
  FUN_0005dc70();
  if (iVar5 < 0x1d) {
    return;
  }
  iVar6 = 7;
  local_3c = 0xe;
  iVar3 = param_3;
  iVar5 = iVar6;
  if (iVar7 < 0xe) goto LAB_0005de77;
  do {
    iVar2 = param_1;
    iVar3 = param_3;
    do {
      iVar2 = iVar2 + iVar6 * 8;
      iVar3 = FUN_0005d5d0(iVar2,iVar3);
      iVar5 = iVar6;
    } while (local_3c <= param_2 - iVar2 >> 2);
LAB_0005de77:
    do {
      iVar6 = iVar5 * 4;
      FUN_0005d5d0(param_2,iVar3);
      if (iVar7 < iVar6) {
        if (iVar7 <= local_3c) {
          local_3c = iVar7;
        }
        FUN_0005d410(param_3 + local_3c * 4,iVar1,param_1);
        return;
      }
      iVar2 = param_1;
      iVar3 = param_3;
      do {
        iVar3 = iVar3 + iVar5 * 0x10;
        FUN_0005d410(iVar3 + local_3c * 4 + iVar5 * -0x10,iVar3,iVar2);
        iVar4 = iVar1 - iVar3 >> 2;
        iVar2 = local_20;
      } while (iVar6 <= iVar4);
      if (local_3c < iVar4) {
        iVar4 = local_3c;
      }
      FUN_0005d410(iVar3 + iVar4 * 4,iVar1,local_20);
      if (iVar7 <= iVar6) {
        return;
      }
      local_3c = iVar5 * 8;
      iVar2 = iVar5 * -8;
      iVar3 = param_3;
      iVar5 = iVar6;
    } while (SBORROW4(iVar7,local_3c) != iVar7 + iVar2 < 0);
  } while( true );
}

