/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401e8540 FUN_1401e8540 * Pseudocode, not original source. */ void FUN_1401e8540(longlong param_1,longlong param_2,int param_3) { ushort uVar1; ushort uVar2; int iVar3; int iVar4; longlong lVar5; int iVar6; longlong lVar7; longlong lVar8; bool bVar9; iVar3 = *(int *)(param_1 + 0x149c); lVar7 = (longlong)param_3; iVar4 = *(int *)(param_1 + 0xba8 + lVar7 * 4); param_3 = param_3 * 2; bVar9 = SBORROW4(param_3,iVar3); iVar6 = param_3 - iVar3; if (param_3 <= iVar3) { do { if (bVar9 != iVar6 < 0) { lVar8 = (longlong)*(int *)(param_1 + 0xba8 + (longlong)param_3 * 4); lVar5 = (longlong)*(int *)(param_1 + 0xbac + (longlong)param_3 * 4); uVar1 = *(ushort *)(param_2 + lVar5 * 4); uVar2 = *(ushort *)(param_2 + lVar8 * 4); if ((uVar1 < uVar2) || ((uVar1 == uVar2 && (*(byte *)(lVar5 + 0x14a4 + param_1) <= *(byte *)(lVar8 + 0x14a4 + param_1))))) { param_3 = param_3 + 1; } } iVar3 = *(int *)(param_1 + 0xba8 + (longlong)param_3 * 4); uVar1 = *(ushort *)(param_2 + (longlong)iVar4 * 4); uVar2 = *(ushort *)(param_2 + (longlong)iVar3 * 4); iVar6 = (int)lVar7; if ((uVar1 < uVar2) || ((uVar1 == uVar2 && (*(byte *)((longlong)iVar4 + 0x14a4 + param_1) <= *(byte *)((longlong)iVar3 + 0x14a4 + param_1))))) { *(int *)(param_1 + 0xba8 + (longlong)iVar6 * 4) = iVar4; return; } lVar7 = (longlong)param_3; param_3 = param_3 * 2; *(int *)(param_1 + 0xba8 + (longlong)iVar6 * 4) = iVar3; iVar3 = *(int *)(param_1 + 0x149c); bVar9 = SBORROW4(param_3,iVar3); iVar6 = param_3 - iVar3; } while (param_3 <= iVar3); } *(int *)(param_1 + 0xba8 + lVar7 * 4) = iVar4; return; }