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