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

58 lines
1.6 KiB
C

/* 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;
}