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;
}