91 lines
3.4 KiB
C
91 lines
3.4 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14007c890 FUN_14007c890
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_14007c890(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_14007c890(param_1,uVar10 - 2,local_res18);
|
|
local_res18 = uVar10;
|
|
local_28 = uVar7;
|
|
}
|
|
else {
|
|
FUN_14007c890(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;
|
|
}
|
|
|