98 lines
3.4 KiB
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;
|
|
}
|
|
|