void FUN_004865c0(int param_1,int *param_2)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  int iVar6;
  undefined4 *puVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  
  iVar6 = param_2[8];
  iVar10 = param_2[9];
  iVar11 = *param_2;
  while ((iVar10 < iVar11 && (iVar8 = iVar11 - iVar10, iVar6 < iVar10))) {
    iVar9 = iVar10 - iVar6;
    iVar5 = 0;
    iVar3 = 0;
    if (iVar9 < iVar8) {
      while( true ) {
        puVar7 = (undefined4 *)(param_1 + (iVar5 + iVar6) * 4);
        bVar1 = iVar9 <= iVar5;
        puVar4 = (undefined4 *)(param_1 + (((iVar6 + iVar11) - iVar10) + iVar5) * 4);
        iVar5 = iVar5 + 1;
        if (bVar1) break;
        uVar2 = *puVar7;
        *puVar7 = *puVar4;
        *puVar4 = uVar2;
      }
      iVar11 = iVar11 - iVar9;
    }
    else {
      while( true ) {
        puVar7 = (undefined4 *)(param_1 + (iVar3 + iVar6) * 4);
        bVar1 = iVar8 <= iVar3;
        puVar4 = (undefined4 *)(param_1 + (iVar3 + iVar10) * 4);
        iVar3 = iVar3 + 1;
        if (bVar1) break;
        uVar2 = *puVar7;
        *puVar7 = *puVar4;
        *puVar4 = uVar2;
      }
      iVar6 = iVar6 + iVar8;
    }
  }
  iVar6 = param_2[9];
  param_2[9] = *param_2;
  param_2[8] = (*param_2 + param_2[8]) - iVar6;
  return;
}