/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400ea9f0 FUN_1400ea9f0 * Pseudocode, not original source. */ longlong * FUN_1400ea9f0(longlong *param_1,longlong *param_2,int param_3,uint param_4) { ulonglong uVar1; undefined *puVar2; uint uVar3; uint uVar5; ulonglong uVar4; uVar3 = 0; uVar4 = 0; puVar2 = (undefined *)*param_1; if (param_3 < 0) { param_3 = uVar3; } if ((int)param_4 < 0) { param_4 = uVar3; } uVar1 = 0; if ((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1401ac008)) { uVar1 = (ulonglong)*(uint *)(puVar2 + -8); } if ((int)uVar1 < (int)(param_3 + param_4)) { uVar5 = uVar3; if ((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1401ac008)) { uVar5 = *(uint *)(puVar2 + -8); } param_4 = uVar5 - param_3; } uVar5 = uVar3; if ((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1401ac008)) { uVar5 = *(uint *)(puVar2 + -8); } if ((int)uVar5 < param_3) { param_4 = uVar3; } if (param_3 == 0) { if ((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1401ac008)) { uVar4 = (ulonglong)*(uint *)(puVar2 + -8); } if (param_4 == (uint)uVar4) { FUN_14006cb70(uVar1,PTR_DAT_1401ac008,puVar2,uVar4); *param_2 = (longlong)PTR_DAT_1401ac008; FUN_1400083a0(param_2,param_1,puVar2,uVar4); return param_2; } } if (puVar2 == (undefined *)0x0) { puVar2 = PTR_DAT_1401ac008; } FUN_140054090(param_2,puVar2 + param_3,(ulonglong)param_4,uVar4); return param_2; }