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

98 lines
3.4 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140074ec0 FUN_140074ec0
* Pseudocode, not original source. */
longlong * FUN_140074ec0(longlong *param_1,undefined **param_2,ulonglong param_3,undefined8 param_4)
{
undefined *puVar1;
int *piVar2;
int iVar3;
longlong lVar4;
int *piVar5;
undefined *puVar6;
undefined **ppuVar7;
ulonglong uVar8;
uint uVar9;
undefined *local_res18;
undefined *local_res20;
ulonglong uVar10;
uVar8 = 0;
local_res18 = (undefined *)((ulonglong)local_res18 & 0xffffffff00000000);
ppuVar7 = param_2;
lVar4 = Ordinal_52();
if ((lVar4 == 0) || (ppuVar7 = *(undefined ***)(lVar4 + 0x18), *ppuVar7 == (undefined *)0x0)) {
FUN_14006cb70(param_2,ppuVar7,param_3,param_4);
*param_1 = (longlong)PTR_DAT_1401ac008;
iVar3 = FUN_14006ca90(&DAT_14015bf08);
puVar6 = FUN_140053f20(param_1,iVar3);
FUN_14006cac0(puVar6,&DAT_14015bf08,iVar3);
FUN_140054010(param_1);
}
else {
FUN_14006cb70(param_2,ppuVar7,param_3,param_4);
local_res20 = PTR_DAT_1401ac008;
uVar10 = uVar8;
if (0 < *(short *)(lVar4 + 0x12)) {
do {
FUN_14006cb70(param_2,ppuVar7,param_3,param_4);
local_res18 = PTR_DAT_1401ac008;
if (0 < (longlong)uVar8) {
FUN_140070060((longlong *)&local_res20,".");
}
param_3 = (ulonglong)*(byte *)(**(longlong **)(lVar4 + 0x18) + uVar8);
FUN_14006e800((longlong *)&local_res18,"%u",param_3,param_4);
ppuVar7 = &local_res18;
param_2 = &local_res20;
FUN_14006e670((longlong *)param_2,(longlong *)ppuVar7);
puVar6 = local_res18;
if (((local_res18 != (undefined *)0x0) && (local_res18 != PTR_DAT_1401ac008)) &&
(puVar1 = local_res18 + -8, puVar1 != (undefined *)0x0)) {
param_2 = (undefined **)FUN_14006cb70(param_2,ppuVar7,param_3,param_4);
FUN_14006b350((int *)param_2);
piVar2 = (int *)(puVar6 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14006cc60(puVar1);
}
FUN_14006b3e0((longlong)param_2);
}
uVar9 = (int)uVar10 + 1;
uVar10 = (ulonglong)uVar9;
uVar8 = uVar8 + 1;
} while ((int)uVar9 < (int)*(short *)(lVar4 + 0x12));
}
puVar1 = local_res20;
FUN_14006cb70(param_2,ppuVar7,param_3,param_4);
puVar6 = PTR_DAT_1401ac008;
*param_1 = (longlong)PTR_DAT_1401ac008;
if (puVar6 == (undefined *)0x0) {
*param_1 = (longlong)PTR_DAT_1401ac008;
}
if (puVar1 != (undefined *)*param_1) {
param_2 = (undefined **)FUN_14006cb70(param_2,ppuVar7,param_3,param_4);
FUN_14006b350((int *)param_2);
FUN_140008440(param_1);
*param_1 = (longlong)puVar1;
if (((puVar1 != PTR_DAT_1401ac008) && (puVar1 != (undefined *)0x0)) &&
(puVar1 != (undefined *)0x8)) {
*(int *)(puVar1 + -4) = *(int *)(puVar1 + -4) + 1;
}
FUN_14006b3e0((longlong)param_2);
}
if (((puVar1 != (undefined *)0x0) && (puVar1 != PTR_DAT_1401ac008)) &&
(puVar1 + -8 != (undefined *)0x0)) {
piVar5 = (int *)FUN_14006cb70(param_2,ppuVar7,param_3,param_4);
FUN_14006b350(piVar5);
piVar2 = (int *)(puVar1 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14006cc60(puVar1 + -8);
}
FUN_14006b3e0((longlong)piVar5);
}
}
return param_1;
}