server-re/decomp/MessageServer_Release_x64/full/functions/0x140116de8.c

44 lines
1.5 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140116de8 FUN_140116de8
* Pseudocode, not original source. */
void FUN_140116de8(longlong param_1,longlong param_2,int param_3)
{
ushort uVar1;
ushort uVar2;
int iVar3;
int iVar4;
longlong lVar5;
int iVar6;
longlong lVar7;
iVar3 = *(int *)(param_1 + 0xba8 + (longlong)param_3 * 4);
while( true ) {
iVar6 = param_3 * 2;
if (*(int *)(param_1 + 0x149c) < iVar6) break;
if (iVar6 < *(int *)(param_1 + 0x149c)) {
lVar5 = (longlong)*(int *)(param_1 + 0xbac + (longlong)iVar6 * 4);
lVar7 = (longlong)*(int *)(param_1 + 0xba8 + (longlong)iVar6 * 4);
uVar1 = *(ushort *)(param_2 + lVar7 * 4);
uVar2 = *(ushort *)(param_2 + lVar5 * 4);
if ((uVar2 < uVar1) ||
((uVar2 == uVar1 &&
(*(byte *)(lVar5 + 0x14a4 + param_1) <= *(byte *)(lVar7 + 0x14a4 + param_1))))) {
iVar6 = iVar6 + 1;
}
}
iVar4 = *(int *)(param_1 + 0xba8 + (longlong)iVar6 * 4);
uVar1 = *(ushort *)(param_2 + (longlong)iVar4 * 4);
uVar2 = *(ushort *)(param_2 + (longlong)iVar3 * 4);
if ((uVar2 < uVar1) ||
((uVar2 == uVar1 &&
(*(byte *)((longlong)iVar3 + 0x14a4 + param_1) <=
*(byte *)((longlong)iVar4 + 0x14a4 + param_1))))) break;
*(int *)(param_1 + 0xba8 + (longlong)param_3 * 4) = iVar4;
param_3 = iVar6;
}
*(int *)(param_1 + 0xba8 + (longlong)param_3 * 4) = iVar3;
return;
}