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

73 lines
1.9 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140002e40 FUN_140002e40
* Pseudocode, not original source. */
void FUN_140002e40(longlong *param_1)
{
int iVar1;
undefined *puVar2;
undefined8 *puVar3;
uint *puVar4;
uint uVar5;
uint uVar6;
undefined *puVar7;
ulonglong uVar8;
undefined8 in_R9;
puVar7 = (undefined *)*param_1;
if (puVar7 == (undefined *)0x0) {
*param_1 = (longlong)PTR_DAT_1401ac010;
}
else if ((puVar7 != PTR_DAT_1401ac010) && ((int *)(puVar7 + -8) != (int *)0x0)) {
if (*(int *)(puVar7 + -4) < 2) {
return;
}
iVar1 = *(int *)(puVar7 + -8);
if (iVar1 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
puVar4 = (uint *)FUN_14006cbf0((longlong)iVar1 * 2 + 10);
uVar5 = 0;
if (puVar4 != (uint *)0x0) {
*puVar4 = 0;
puVar4[1] = 1;
}
puVar2 = PTR_DAT_1401ac010;
puVar7 = (undefined *)*param_1;
if (puVar7 == (undefined *)0x0) {
uVar6 = 0;
}
else {
uVar6 = uVar5;
if (puVar7 != PTR_DAT_1401ac010) {
uVar6 = *(uint *)(puVar7 + -8);
}
}
*puVar4 = uVar6;
puVar7 = (undefined *)*param_1;
if ((puVar7 != (undefined *)0x0) && (puVar7 != puVar2)) {
uVar5 = *(uint *)(puVar7 + -8);
}
if (puVar7 == (undefined *)0x0) {
puVar7 = puVar2;
}
uVar8 = (ulonglong)uVar5;
FUN_14006ca20(puVar4 + 2,puVar7,uVar5);
FUN_1400031e0(param_1,puVar7,uVar8,in_R9);
*param_1 = (longlong)(puVar4 + 2);
return;
}
puVar3 = (undefined8 *)FUN_14006cbf0(10);
*puVar3 = 0;
*(undefined2 *)(puVar3 + 1) = 0;
if (puVar3 != (undefined8 *)0x0) {
*(undefined4 *)puVar3 = 0;
*(undefined4 *)((longlong)puVar3 + 4) = 1;
}
*(undefined2 *)(puVar3 + 1) = 0;
*param_1 = (longlong)(puVar3 + 1);
return;
}