server-re/decomp/AgentManager_Release_x64/full/functions/0x14009d150.c
2026-10-15 09:58:24 -04:00

70 lines
2.1 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14009d150 FUN_14009d150
* Pseudocode, not original source. */
void FUN_14009d150(longlong param_1,ulonglong param_2,int param_3)
{
ulonglong uVar1;
undefined8 uVar2;
ulonglong uVar3;
int iVar5;
ulonglong uVar6;
uint uVar7;
ulonglong uVar9;
ulonglong uVar10;
longlong lVar11;
uint local_res10;
ulonglong local_res20;
ulonglong local_28;
ulonglong uVar4;
int iVar8;
local_res10 = (uint)param_2;
uVar6 = (ulonglong)param_3;
local_res20 = (ulonglong)(int)local_res10;
local_28 = uVar6;
if (param_3 < (int)local_res10) {
do {
uVar9 = param_2 & 0xffffffff;
iVar5 = (int)uVar6;
lVar11 = (longlong)iVar5;
uVar3 = local_res20;
while( true ) {
uVar1 = *(ulonglong *)(param_1 + local_28 * 8);
uVar4 = *(ulonglong *)(param_1 + lVar11 * 8);
while ((uVar4 < uVar1 && (lVar11 < (longlong)uVar3))) {
lVar11 = lVar11 + 1;
uVar4 = *(ulonglong *)(param_1 + lVar11 * 8);
}
do {
uVar10 = uVar9;
uVar4 = uVar3;
uVar3 = uVar4 - 1;
iVar8 = (int)uVar10;
uVar7 = iVar8 - 1;
uVar9 = (ulonglong)uVar7;
} while (uVar1 < *(ulonglong *)(param_1 + uVar3 * 8));
if ((longlong)uVar3 <= lVar11) break;
uVar2 = *(undefined8 *)(param_1 + lVar11 * 8);
*(undefined8 *)(param_1 + lVar11 * 8) = *(undefined8 *)(param_1 + uVar3 * 8);
*(undefined8 *)(param_1 + uVar3 * 8) = uVar2;
}
*(undefined8 *)(param_1 + local_28 * 8) = *(undefined8 *)(param_1 + uVar3 * 8);
*(ulonglong *)(param_1 + uVar3 * 8) = uVar1;
if ((int)(((int)param_2 - uVar7) + -1) < (int)(uVar7 - iVar5)) {
FUN_14009d150(param_1,(ulonglong)(iVar8 - 2),iVar5);
uVar6 = uVar10;
local_28 = uVar4;
}
else {
FUN_14009d150(param_1,param_2,iVar8);
local_res10 = iVar8 - 2;
local_res20 = uVar4 - 2;
}
param_2 = (ulonglong)local_res10;
} while ((int)uVar6 < (int)local_res10);
}
return;
}