/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14004d960 FUN_14004d960 * Pseudocode, not original source. */ void FUN_14004d960(longlong param_1,uint param_2,uint param_3) { double dVar1; undefined8 uVar2; undefined8 uVar3; undefined8 uVar4; longlong *plVar5; longlong lVar6; ulonglong uVar7; ulonglong uVar8; uint uVar9; ulonglong uVar11; longlong lVar12; uint local_res10; uint local_res18; ulonglong local_res20; ulonglong local_28; uint uVar10; uVar11 = (ulonglong)(int)param_3; uVar8 = (ulonglong)(int)param_2; local_res10 = param_2; local_res18 = param_3; local_res20 = uVar8; local_28 = uVar11; if ((int)param_3 < (int)param_2) { do { uVar8 = uVar8 & 0xffffffff; lVar12 = (longlong)(int)uVar11; uVar11 = local_res20; while( true ) { dVar1 = *(double *)(*(longlong *)(param_1 + local_28 * 0x18) + 0x188); plVar5 = (longlong *)(param_1 + lVar12 * 0x18); for (; (*(double *)(*plVar5 + 0x188) <= dVar1 && dVar1 != *(double *)(*plVar5 + 0x188) && (lVar12 < (longlong)uVar11)); lVar12 = lVar12 + 1) { plVar5 = plVar5 + 3; } lVar6 = param_1 + uVar11 * 0x18; do { uVar7 = uVar11; plVar5 = (longlong *)(lVar6 + -0x18); lVar6 = lVar6 + -0x18; uVar10 = (uint)uVar8; uVar9 = uVar10 - 1; uVar8 = (ulonglong)uVar9; uVar11 = uVar7 - 1; } while (dVar1 < *(double *)(*plVar5 + 0x188)); if ((longlong)uVar11 <= lVar12) break; uVar2 = *(undefined8 *)(param_1 + lVar12 * 0x18); uVar3 = *(undefined8 *)(param_1 + 8 + lVar12 * 0x18); uVar4 = *(undefined8 *)(param_1 + 0x10 + lVar12 * 0x18); *(undefined8 *)(param_1 + lVar12 * 0x18) = *(undefined8 *)(param_1 + uVar11 * 0x18); *(undefined8 *)(param_1 + 8 + lVar12 * 0x18) = *(undefined8 *)(param_1 + 8 + uVar11 * 0x18); *(undefined8 *)(param_1 + 0x10 + lVar12 * 0x18) = *(undefined8 *)(param_1 + 0x10 + uVar11 * 0x18); *(undefined8 *)(param_1 + uVar11 * 0x18) = uVar2; *(undefined8 *)(param_1 + 8 + uVar11 * 0x18) = uVar3; *(undefined8 *)(param_1 + 0x10 + uVar11 * 0x18) = uVar4; } uVar2 = *(undefined8 *)(param_1 + local_28 * 0x18); uVar3 = *(undefined8 *)(param_1 + 8 + local_28 * 0x18); uVar4 = *(undefined8 *)(param_1 + 0x10 + local_28 * 0x18); *(undefined8 *)(param_1 + local_28 * 0x18) = *(undefined8 *)(param_1 + uVar11 * 0x18); *(undefined8 *)(param_1 + 8 + local_28 * 0x18) = *(undefined8 *)(param_1 + 8 + uVar11 * 0x18); *(undefined8 *)(param_1 + 0x10 + local_28 * 0x18) = *(undefined8 *)(param_1 + 0x10 + uVar11 * 0x18); *(undefined8 *)(param_1 + uVar11 * 0x18) = uVar2; *(undefined8 *)(param_1 + 8 + uVar11 * 0x18) = uVar3; *(undefined8 *)(param_1 + 0x10 + uVar11 * 0x18) = uVar4; if ((int)((local_res10 - uVar9) + -1) < (int)(uVar9 - local_res18)) { FUN_14004d960(param_1,uVar10 - 2,local_res18); local_res18 = uVar10; local_28 = uVar7; } else { FUN_14004d960(param_1,local_res10,uVar10); local_res10 = uVar10 - 2; local_res20 = uVar7 - 2; } uVar11 = (ulonglong)local_res18; uVar8 = (ulonglong)local_res10; } while ((int)local_res18 < (int)local_res10); } return; }