
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,
   std::vector<gold::Output_section*> >, gold::Output_section**, int> */

__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
 std::
 __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,_int>
           (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
            __first,__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
                    __middle,
           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
           __last,int __len1,int __len2,Output_section **__buffer,int __buffer_size)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,
                  void *param_7,int param_8)

{
  size_t sVar1;
  undefined1 local_20 [12];
  undefined4 uStack_14;
  
  uStack_14 = 0x1057f9;
  if ((param_6 < param_5) && (param_6 <= param_8)) {
    if (param_6 != 0) {
      sVar1 = (int)param_4 - (int)param_3;
      if (param_4 != param_3) {
        memmove(param_7,param_3,sVar1);
      }
      if (param_2 != param_3) {
        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,
                (int)param_3 - (int)param_2);
      }
      if (sVar1 != 0) {
        memmove(param_2,param_7,sVar1);
      }
      *param_1 = (int)param_2 + sVar1;
      return param_1;
    }
  }
  else {
    if (param_8 < param_5) {
      FUN_001055f0(local_20,param_2,param_3,param_4,0);
      *param_1 = (int)param_2;
      return param_1;
    }
    if (param_5 == 0) {
      *param_1 = (int)param_4;
      return param_1;
    }
    sVar1 = (int)param_3 - (int)param_2;
    if (param_2 != param_3) {
      memmove(param_7,param_2,sVar1);
    }
    if (param_4 != param_3) {
      memmove(param_2,param_3,(int)param_4 - (int)param_3);
    }
    param_2 = (void *)((int)param_4 - sVar1);
    if (sVar1 != 0) {
      memmove(param_2,param_7,sVar1);
    }
  }
  *param_1 = (int)param_2;
  return param_1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x4e4807
SUB ESP,0x1c
MOV EDX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x44]
MOV EBP,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x4c]
CMP EDX,EAX
JLE 0x001058b0
CMP EAX,ECX
JG 0x001058b0
TEST EAX,EAX
JZ 0x0010591a
MOV EDX,dword ptr [ESP + 0x3c]
SUB EDX,ESI
CMP dword ptr [ESP + 0x3c],ESI
JZ 0x00105857
SUB ESP,0x4
PUSH EDX
MOV dword ptr [ESP + 0x10],EDX
PUSH ESI
PUSH dword ptr [ESP + 0x54]
CALL 0x00039a50
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
CMP EDI,ESI
JZ 0x00105879
MOV dword ptr [ESP + 0x8],EDX
SUB ESI,EDI
SUB ESP,0x4
PUSH ESI
PUSH EDI
MOV EAX,dword ptr [ESP + 0x48]
SUB EAX,ESI
PUSH EAX
CALL 0x00039a50
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EDX,EDX
JZ 0x00105896
SUB ESP,0x4
PUSH EDX
MOV dword ptr [ESP + 0x10],EDX
PUSH dword ptr [ESP + 0x50]
PUSH EDI
CALL 0x00039a50
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
ADD EDI,EDX
MOV EAX,EBP
MOV dword ptr [EBP],EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
CMP EDX,ECX
JG 0x00105948
TEST EDX,EDX
JZ 0x00105930
MOV EDX,ESI
SUB EDX,EDI
CMP EDI,ESI
JZ 0x001058dd
SUB ESP,0x4
PUSH EDX
MOV dword ptr [ESP + 0x10],EDX
PUSH EDI
PUSH dword ptr [ESP + 0x54]
CALL 0x00039a50
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
CMP dword ptr [ESP + 0x3c],ESI
JZ 0x001058ff
MOV dword ptr [ESP + 0x8],EDX
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x40]
SUB EAX,ESI
PUSH EAX
PUSH ESI
PUSH EDI
CALL 0x00039a50
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0x3c]
SUB EDI,EDX
TEST EDX,EDX
JZ 0x0010591a
SUB ESP,0x4
PUSH EDX
PUSH dword ptr [ESP + 0x50]
PUSH EDI
CALL 0x00039a50
ADD ESP,0x10
MOV dword ptr [EBP],EDI
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [EBP],EAX
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
LEA EAX,[ESP + 0xc]
SUB ESP,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x4c]
PUSH ESI
PUSH EDI
PUSH EAX
CALL 0x001055f0
MOV EAX,dword ptr [ESP + 0x58]
ADD ESP,0x1c
SUB EAX,ESI
ADD EDI,EAX
MOV EAX,EBP
MOV dword ptr [EBP],EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint * FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)\n\n{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}\n\n" comment (function_definition "int * FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)\n\n{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}" primitive_type (pointer_declarator "* FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" * (function_declarator "FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" identifier (parameter_list "(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "void *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "void *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "void *param_7" primitive_type (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) )))) (compound_statement "{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "undefined1 local_20 [12];" type_identifier (array_declarator "local_20 [12]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1057f9;" (assignment_expression "uStack_14 = 0x1057f9" identifier = number_literal) ;) (if_statement "if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" if (parenthesized_expression "((param_6 < param_5) && (param_6 <= param_8))" ( (binary_expression "(param_6 < param_5) && (param_6 <= param_8)" (parenthesized_expression "(param_6 < param_5)" ( (binary_expression "param_6 < param_5" identifier < identifier) )) && (parenthesized_expression "(param_6 <= param_8)" ( (binary_expression "param_6 <= param_8" identifier <= identifier) ))) )) (compound_statement "{\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }" { (if_statement "if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }" { (expression_statement "sVar1 = (int)param_4 - (int)param_3;" (assignment_expression "sVar1 = (int)param_4 - (int)param_3" identifier = (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }" if (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) (compound_statement "{\n        memmove(param_7,param_3,sVar1);\n      }" { (expression_statement "memmove(param_7,param_3,sVar1);" (call_expression "memmove(param_7,param_3,sVar1)" identifier (argument_list "(param_7,param_3,sVar1)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }" { (expression_statement "memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);" (call_expression "memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2)" identifier (argument_list "((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2)" ( (cast_expression "(void *)((int)param_4 - ((int)param_3 - (int)param_2))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 - ((int)param_3 - (int)param_2))" ( (binary_expression "(int)param_4 - ((int)param_3 - (int)param_2)" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)param_3 - (int)param_2)" ( (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) , identifier , (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (if_statement "if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }" if (parenthesized_expression "(sVar1 != 0)" ( (binary_expression "sVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        memmove(param_2,param_7,sVar1);\n      }" { (expression_statement "memmove(param_2,param_7,sVar1);" (call_expression "memmove(param_2,param_7,sVar1)" identifier (argument_list "(param_2,param_7,sVar1)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "*param_1 = (int)param_2 + sVar1;" (assignment_expression "*param_1 = (int)param_2 + sVar1" (pointer_expression "*param_1" * identifier) = (binary_expression "(int)param_2 + sVar1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" else (compound_statement "{\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" { (if_statement "if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }" if (parenthesized_expression "(param_8 < param_5)" ( (binary_expression "param_8 < param_5" identifier < identifier) )) (compound_statement "{\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }" { (expression_statement "FUN_001055f0(local_20,param_2,param_3,param_4,0);" (call_expression "FUN_001055f0(local_20,param_2,param_3,param_4,0)" identifier (argument_list "(local_20,param_2,param_3,param_4,0)" ( identifier , identifier , identifier , identifier , number_literal ))) ;) (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (if_statement "if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n      *param_1 = (int)param_4;\n      return param_1;\n    }" { (expression_statement "*param_1 = (int)param_4;" (assignment_expression "*param_1 = (int)param_4" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "sVar1 = (int)param_3 - (int)param_2;" (assignment_expression "sVar1 = (int)param_3 - (int)param_2" identifier = (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n      memmove(param_7,param_2,sVar1);\n    }" { (expression_statement "memmove(param_7,param_2,sVar1);" (call_expression "memmove(param_7,param_2,sVar1)" identifier (argument_list "(param_7,param_2,sVar1)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }" if (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) (compound_statement "{\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }" { (expression_statement "memmove(param_2,param_3,(int)param_4 - (int)param_3);" (call_expression "memmove(param_2,param_3,(int)param_4 - (int)param_3)" identifier (argument_list "(param_2,param_3,(int)param_4 - (int)param_3)" ( identifier , identifier , (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (expression_statement "param_2 = (void *)((int)param_4 - sVar1);" (assignment_expression "param_2 = (void *)((int)param_4 - sVar1)" identifier = (cast_expression "(void *)((int)param_4 - sVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 - sVar1)" ( (binary_expression "(int)param_4 - sVar1" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (if_statement "if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }" if (parenthesized_expression "(sVar1 != 0)" ( (binary_expression "sVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      memmove(param_2,param_7,sVar1);\n    }" { (expression_statement "memmove(param_2,param_7,sVar1);" (call_expression "memmove(param_2,param_7,sVar1)" identifier (argument_list "(param_2,param_7,sVar1)" ( identifier , identifier , identifier ))) ;) })) }))) (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name: __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,\n   std::vector<gold::Output_section*> >, gold::Output_section**, int> */\n\n__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,_int>\n           (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n            __first,__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n                    __middle,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __last,int __len1,int __len2,Output_section **__buffer,int __buffer_size)\n\n{\n}\n\n" comment comment comment (ERROR "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,_int>\n           (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n            __first,__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n                    __middle,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __last,int __len1,int __len2,Output_section **__buffer,int __buffer_size)" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,_int>\n           (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n            __first,__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n                    __middle,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __last,int __len1,int __len2,Output_section **__buffer,int __buffer_size)" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,_int" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx::__normal_iterator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std::\n __rotate_adaptive<__gnu_cxx" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) > identifier) (ERROR "::\n __rotate_adaptive" : : 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 "*,_int" * (ERROR "," ,) identifier)) > (parenthesized_expression "(__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n            __first,__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n                    __middle,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n           __last,int __len1,int __len2,Output_section **__buffer,int __buffer_size)" ( (ERROR "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n            __first,__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n                    __middle,\n           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::" (comma_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n            __first,__normal_iterator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>\n            __first" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std" (binary_expression "__normal_iterator<gold::Output_section**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_section**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_section" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) > identifier) > identifier) , (binary_expression "__normal_iterator<gold" identifier < identifier)) : : (type_descriptor "Output_section**" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) , identifier : : (binary_expression "vector<gold" identifier < identifier) : : (type_descriptor "Output_section*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : : (binary_expression "allocator<gold" identifier < identifier) : : (comma_expression "Output_section*>_>_>\n                    __middle,\n           __normal_iterator<gold" (binary_expression "Output_section*>_>_>\n                    __middle" (binary_expression "Output_section*>_>_" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) > identifier) , (binary_expression "__normal_iterator<gold" identifier < identifier)) : : (type_descriptor "Output_section**" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) , identifier : : (binary_expression "vector<gold" identifier < identifier) : : (type_descriptor "Output_section*" type_identifier (abstract_pointer_declarator "*" *)) , identifier : : (binary_expression "allocator<gold" identifier < identifier) : :) (comma_expression "Output_section*>_>_>\n           __last,int __len1,int __len2,Output_section **__buffer,int __buffer_size" (binary_expression "Output_section*>_>_>\n           __last" (binary_expression "Output_section*>_>_" (binary_expression "Output_section*>_" identifier * (ERROR ">" >) identifier) > identifier) > identifier) , (ERROR "int" identifier) (comma_expression "__len1,int __len2,Output_section **__buffer,int __buffer_size" identifier , (ERROR "int" identifier) (comma_expression "__len2,Output_section **__buffer,int __buffer_size" identifier , (comma_expression "Output_section **__buffer,int __buffer_size" (binary_expression "Output_section **__buffer" identifier * (pointer_expression "*__buffer" * identifier)) , (ERROR "int" identifier) identifier)))) )))) (compound_statement "{\n}" { }))
(translation_unit "int * FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)\n\n{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}\n\n" (function_definition "int * FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)\n\n{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}" primitive_type (pointer_declarator "* FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" * (function_declarator "FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" identifier (parameter_list "(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "void *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "void *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "void *param_7" primitive_type (pointer_declarator "*param_7" * identifier)) , (parameter_declaration "int param_8" primitive_type identifier) )))) (compound_statement "{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "undefined1 local_20 [12];" type_identifier (array_declarator "local_20 [12]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1057f9;" (assignment_expression "uStack_14 = 0x1057f9" identifier = number_literal) ;) (if_statement "if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" if (parenthesized_expression "((param_6 < param_5) && (param_6 <= param_8))" ( (binary_expression "(param_6 < param_5) && (param_6 <= param_8)" (parenthesized_expression "(param_6 < param_5)" ( (binary_expression "param_6 < param_5" identifier < identifier) )) && (parenthesized_expression "(param_6 <= param_8)" ( (binary_expression "param_6 <= param_8" identifier <= identifier) ))) )) (compound_statement "{\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }" { (if_statement "if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }" { (expression_statement "sVar1 = (int)param_4 - (int)param_3;" (assignment_expression "sVar1 = (int)param_4 - (int)param_3" identifier = (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }" if (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) (compound_statement "{\n        memmove(param_7,param_3,sVar1);\n      }" { (expression_statement "memmove(param_7,param_3,sVar1);" (call_expression "memmove(param_7,param_3,sVar1)" identifier (argument_list "(param_7,param_3,sVar1)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }" { (expression_statement "memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);" (call_expression "memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2)" identifier (argument_list "((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2)" ( (cast_expression "(void *)((int)param_4 - ((int)param_3 - (int)param_2))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 - ((int)param_3 - (int)param_2))" ( (binary_expression "(int)param_4 - ((int)param_3 - (int)param_2)" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)param_3 - (int)param_2)" ( (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) , identifier , (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (if_statement "if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }" if (parenthesized_expression "(sVar1 != 0)" ( (binary_expression "sVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        memmove(param_2,param_7,sVar1);\n      }" { (expression_statement "memmove(param_2,param_7,sVar1);" (call_expression "memmove(param_2,param_7,sVar1)" identifier (argument_list "(param_2,param_7,sVar1)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "*param_1 = (int)param_2 + sVar1;" (assignment_expression "*param_1 = (int)param_2 + sVar1" (pointer_expression "*param_1" * identifier) = (binary_expression "(int)param_2 + sVar1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (return_statement "return param_1;" return identifier ;) })) }) (else_clause "else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" else (compound_statement "{\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" { (if_statement "if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }" if (parenthesized_expression "(param_8 < param_5)" ( (binary_expression "param_8 < param_5" identifier < identifier) )) (compound_statement "{\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }" { (expression_statement "FUN_001055f0(local_20,param_2,param_3,param_4,0);" (call_expression "FUN_001055f0(local_20,param_2,param_3,param_4,0)" identifier (argument_list "(local_20,param_2,param_3,param_4,0)" ( identifier , identifier , identifier , identifier , number_literal ))) ;) (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (if_statement "if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n      *param_1 = (int)param_4;\n      return param_1;\n    }" { (expression_statement "*param_1 = (int)param_4;" (assignment_expression "*param_1 = (int)param_4" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "sVar1 = (int)param_3 - (int)param_2;" (assignment_expression "sVar1 = (int)param_3 - (int)param_2" identifier = (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }" if (parenthesized_expression "(param_2 != param_3)" ( (binary_expression "param_2 != param_3" identifier != identifier) )) (compound_statement "{\n      memmove(param_7,param_2,sVar1);\n    }" { (expression_statement "memmove(param_7,param_2,sVar1);" (call_expression "memmove(param_7,param_2,sVar1)" identifier (argument_list "(param_7,param_2,sVar1)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }" if (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) (compound_statement "{\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }" { (expression_statement "memmove(param_2,param_3,(int)param_4 - (int)param_3);" (call_expression "memmove(param_2,param_3,(int)param_4 - (int)param_3)" identifier (argument_list "(param_2,param_3,(int)param_4 - (int)param_3)" ( identifier , identifier , (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) })) (expression_statement "param_2 = (void *)((int)param_4 - sVar1);" (assignment_expression "param_2 = (void *)((int)param_4 - sVar1)" identifier = (cast_expression "(void *)((int)param_4 - sVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 - sVar1)" ( (binary_expression "(int)param_4 - sVar1" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (if_statement "if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }" if (parenthesized_expression "(sVar1 != 0)" ( (binary_expression "sVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      memmove(param_2,param_7,sVar1);\n    }" { (expression_statement "memmove(param_2,param_7,sVar1);" (call_expression "memmove(param_2,param_7,sVar1)" identifier (argument_list "(param_2,param_7,sVar1)" ( identifier , identifier , identifier ))) ;) })) }))) (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ))) , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })))
(function_definition "int * FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)\n\n{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}" (primitive_type "int") (pointer_declarator "* FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" (* "*") (function_declarator "FUN_001057f0(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" (identifier "FUN_001057f0") (parameter_list "(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,\n                  void *param_7,int param_8)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "void *param_2" (primitive_type "void") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "void *param_3" (primitive_type "void") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "void *param_4" (primitive_type "void") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "void *param_7" (primitive_type "void") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) () ")")))) (compound_statement "{\n  size_t sVar1;\n  undefined1 local_20 [12];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1057f9;\n  if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }\n  *param_1 = (int)param_2;\n  return param_1;\n}" ({ "{") (declaration "size_t sVar1;" (primitive_type "size_t") (identifier "sVar1") (; ";")) (declaration "undefined1 local_20 [12];" (type_identifier "undefined1") (array_declarator "local_20 [12]" (identifier "local_20") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1057f9;" (assignment_expression "uStack_14 = 0x1057f9" (identifier "uStack_14") (= "=") (number_literal "0x1057f9")) (; ";")) (if_statement "if ((param_6 < param_5) && (param_6 <= param_8)) {\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }\n  else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" (if "if") (parenthesized_expression "((param_6 < param_5) && (param_6 <= param_8))" (( "(") (binary_expression "(param_6 < param_5) && (param_6 <= param_8)" (parenthesized_expression "(param_6 < param_5)" (( "(") (binary_expression "param_6 < param_5" (identifier "param_6") (< "<") (identifier "param_5")) () ")")) (&& "&&") (parenthesized_expression "(param_6 <= param_8)" (( "(") (binary_expression "param_6 <= param_8" (identifier "param_6") (<= "<=") (identifier "param_8")) () ")"))) () ")")) (compound_statement "{\n    if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }\n  }" ({ "{") (if_statement "if (param_6 != 0) {\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }" (if "if") (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      sVar1 = (int)param_4 - (int)param_3;\n      if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }\n      if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }\n      if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }\n      *param_1 = (int)param_2 + sVar1;\n      return param_1;\n    }" ({ "{") (expression_statement "sVar1 = (int)param_4 - (int)param_3;" (assignment_expression "sVar1 = (int)param_4 - (int)param_3" (identifier "sVar1") (= "=") (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (if_statement "if (param_4 != param_3) {\n        memmove(param_7,param_3,sVar1);\n      }" (if "if") (parenthesized_expression "(param_4 != param_3)" (( "(") (binary_expression "param_4 != param_3" (identifier "param_4") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n        memmove(param_7,param_3,sVar1);\n      }" ({ "{") (expression_statement "memmove(param_7,param_3,sVar1);" (call_expression "memmove(param_7,param_3,sVar1)" (identifier "memmove") (argument_list "(param_7,param_3,sVar1)" (( "(") (identifier "param_7") (, ",") (identifier "param_3") (, ",") (identifier "sVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 != param_3) {\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }" (if "if") (parenthesized_expression "(param_2 != param_3)" (( "(") (binary_expression "param_2 != param_3" (identifier "param_2") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);\n      }" ({ "{") (expression_statement "memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2);" (call_expression "memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2)" (identifier "memmove") (argument_list "((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,\n                (int)param_3 - (int)param_2)" (( "(") (cast_expression "(void *)((int)param_4 - ((int)param_3 - (int)param_2))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 - ((int)param_3 - (int)param_2))" (( "(") (binary_expression "(int)param_4 - ((int)param_3 - (int)param_2)" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (parenthesized_expression "((int)param_3 - (int)param_2)" (( "(") (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) () ")"))) (, ",") (identifier "param_2") (, ",") (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) (; ";")) (} "}"))) (if_statement "if (sVar1 != 0) {\n        memmove(param_2,param_7,sVar1);\n      }" (if "if") (parenthesized_expression "(sVar1 != 0)" (( "(") (binary_expression "sVar1 != 0" (identifier "sVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        memmove(param_2,param_7,sVar1);\n      }" ({ "{") (expression_statement "memmove(param_2,param_7,sVar1);" (call_expression "memmove(param_2,param_7,sVar1)" (identifier "memmove") (argument_list "(param_2,param_7,sVar1)" (( "(") (identifier "param_2") (, ",") (identifier "param_7") (, ",") (identifier "sVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = (int)param_2 + sVar1;" (assignment_expression "*param_1 = (int)param_2 + sVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "(int)param_2 + sVar1" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "sVar1"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" (else "else") (compound_statement "{\n    if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }\n    if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }\n    sVar1 = (int)param_3 - (int)param_2;\n    if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }\n    if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }\n    param_2 = (void *)((int)param_4 - sVar1);\n    if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }\n  }" ({ "{") (if_statement "if (param_8 < param_5) {\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }" (if "if") (parenthesized_expression "(param_8 < param_5)" (( "(") (binary_expression "param_8 < param_5" (identifier "param_8") (< "<") (identifier "param_5")) () ")")) (compound_statement "{\n      FUN_001055f0(local_20,param_2,param_3,param_4,0);\n      *param_1 = (int)param_2;\n      return param_1;\n    }" ({ "{") (expression_statement "FUN_001055f0(local_20,param_2,param_3,param_4,0);" (call_expression "FUN_001055f0(local_20,param_2,param_3,param_4,0)" (identifier "FUN_001055f0") (argument_list "(local_20,param_2,param_3,param_4,0)" (( "(") (identifier "local_20") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (if_statement "if (param_5 == 0) {\n      *param_1 = (int)param_4;\n      return param_1;\n    }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *param_1 = (int)param_4;\n      return param_1;\n    }" ({ "{") (expression_statement "*param_1 = (int)param_4;" (assignment_expression "*param_1 = (int)param_4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "sVar1 = (int)param_3 - (int)param_2;" (assignment_expression "sVar1 = (int)param_3 - (int)param_2" (identifier "sVar1") (= "=") (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (if_statement "if (param_2 != param_3) {\n      memmove(param_7,param_2,sVar1);\n    }" (if "if") (parenthesized_expression "(param_2 != param_3)" (( "(") (binary_expression "param_2 != param_3" (identifier "param_2") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n      memmove(param_7,param_2,sVar1);\n    }" ({ "{") (expression_statement "memmove(param_7,param_2,sVar1);" (call_expression "memmove(param_7,param_2,sVar1)" (identifier "memmove") (argument_list "(param_7,param_2,sVar1)" (( "(") (identifier "param_7") (, ",") (identifier "param_2") (, ",") (identifier "sVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 != param_3) {\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }" (if "if") (parenthesized_expression "(param_4 != param_3)" (( "(") (binary_expression "param_4 != param_3" (identifier "param_4") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n      memmove(param_2,param_3,(int)param_4 - (int)param_3);\n    }" ({ "{") (expression_statement "memmove(param_2,param_3,(int)param_4 - (int)param_3);" (call_expression "memmove(param_2,param_3,(int)param_4 - (int)param_3)" (identifier "memmove") (argument_list "(param_2,param_3,(int)param_4 - (int)param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) () ")"))) (; ";")) (} "}"))) (expression_statement "param_2 = (void *)((int)param_4 - sVar1);" (assignment_expression "param_2 = (void *)((int)param_4 - sVar1)" (identifier "param_2") (= "=") (cast_expression "(void *)((int)param_4 - sVar1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 - sVar1)" (( "(") (binary_expression "(int)param_4 - sVar1" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (identifier "sVar1")) () ")")))) (; ";")) (if_statement "if (sVar1 != 0) {\n      memmove(param_2,param_7,sVar1);\n    }" (if "if") (parenthesized_expression "(sVar1 != 0)" (( "(") (binary_expression "sVar1 != 0" (identifier "sVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      memmove(param_2,param_7,sVar1);\n    }" ({ "{") (expression_statement "memmove(param_2,param_7,sVar1);" (call_expression "memmove(param_2,param_7,sVar1)" (identifier "memmove") (argument_list "(param_2,param_7,sVar1)" (( "(") (identifier "param_2") (, ",") (identifier "param_7") (, ",") (identifier "sVar1") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,
   std::vector<gold::Output_section*> >, gold::Output_section**, int> */

__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
 std::
 __rotate_adaptive<__gnu_cxx::__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*>_>,_gold::Output_section**,_int>
           (__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
            __first,__normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
                    __middle,
           __normal_iterator<gold::Output_section**,_std::vector<gold::Output_section*,_std::allocator<gold::Output_section*>_>_>
           __last,int __len1,int __len2,Output_section **__buffer,int __buffer_size)

{
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int * MASKED(int *param_1,void *param_2,void *param_3,void *param_4,int param_5,int param_6,
                  void *param_7,int param_8)

{
  size_t sVar1;
  undefined1 local_20 [12];
  undefined4 uStack_14;
  
  uStack_14 = 0x1057f9;
  if ((param_6 < param_5) && (param_6 <= param_8)) {
    if (param_6 != 0) {
      sVar1 = (int)param_4 - (int)param_3;
      if (param_4 != param_3) {
        memmove(param_7,param_3,sVar1);
      }
      if (param_2 != param_3) {
        memmove((void *)((int)param_4 - ((int)param_3 - (int)param_2)),param_2,
                (int)param_3 - (int)param_2);
      }
      if (sVar1 != 0) {
        memmove(param_2,param_7,sVar1);
      }
      *param_1 = (int)param_2 + sVar1;
      return param_1;
    }
  }
  else {
    if (param_8 < param_5) {
      FUN_001055f0(local_20,param_2,param_3,param_4,0);
      *param_1 = (int)param_2;
      return param_1;
    }
    if (param_5 == 0) {
      *param_1 = (int)param_4;
      return param_1;
    }
    sVar1 = (int)param_3 - (int)param_2;
    if (param_2 != param_3) {
      memmove(param_7,param_2,sVar1);
    }
    if (param_4 != param_3) {
      memmove(param_2,param_3,(int)param_4 - (int)param_3);
    }
    param_2 = (void *)((int)param_4 - sVar1);
    if (sVar1 != 0) {
      memmove(param_2,param_7,sVar1);
    }
  }
  *param_1 = (int)param_2;
  return param_1;
}

