/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14004f8c0 FUN_14004f8c0 * Pseudocode, not original source. */ void FUN_14004f8c0(longlong param_1,longlong param_2) { int *piVar1; undefined8 *puVar2; longlong *plVar3; undefined8 *puVar4; undefined8 uVar5; undefined8 *puVar6; undefined *puVar7; undefined2 local_res8 [4]; undefined8 *local_res10; undefined *local_50 [2]; undefined8 local_40; undefined1 local_38; longlong local_30; undefined1 local_28; local_30 = param_1 + 0x150; FUN_14016db50(); local_28 = 1; puVar2 = operator_new(0xc); puVar6 = (undefined8 *)0x0; if (puVar2 == (undefined8 *)0x0) { local_res10 = (undefined8 *)0x0; } else { *puVar2 = 0; *(undefined4 *)(puVar2 + 1) = 0; local_res10 = (undefined8 *)FUN_14016d940(0x10); local_res10[1] = 1; *local_res10 = puVar2; } puVar2 = local_res10; puVar4 = puVar6; if (local_res10 != (undefined8 *)0x0) { puVar4 = (undefined8 *)*local_res10; } *(undefined4 *)puVar4 = *(undefined4 *)(param_2 + 0x30); puVar4 = puVar6; if (local_res10 != (undefined8 *)0x0) { puVar4 = (undefined8 *)*local_res10; } plVar3 = (longlong *)FUN_140055ad0(param_1 + 0xf8,puVar4); if (puVar2 != (undefined8 *)*plVar3) { if (puVar2 != (undefined8 *)0x0) { puVar2[1] = puVar2[1] + 1; puVar2 = local_res10; } puVar4 = puVar6; if ((*plVar3 != 0) && (*(longlong *)(*plVar3 + 8) = *(longlong *)(*plVar3 + 8) + -1, puVar2 = local_res10, *(longlong *)(*plVar3 + 8) == 0)) { puVar4 = (undefined8 *)*plVar3; } *plVar3 = (longlong)puVar2; if (puVar4 != (undefined8 *)0x0) { if ((void *)*puVar4 != (void *)0x0) { operator_delete((void *)*puVar4); } FUN_14016d970(puVar4); } } FUN_140170990(local_50,param_2); puVar7 = local_50[0]; if (local_50[0] == (undefined *)0x0) { puVar7 = PTR_DAT_140344098; } puVar4 = puVar6; if (puVar2 != (undefined8 *)0x0) { puVar4 = (undefined8 *)*puVar2; } FUN_1400a6b90("Server Join [%d][%s]\n",*(undefined4 *)puVar4,puVar7); *(int *)(param_1 + 0x62c) = *(int *)(param_1 + 0x62c) + 1; local_res8[0] = *(undefined2 *)(param_1 + 0xd0); if (puVar2 != (undefined8 *)0x0) { puVar6 = (undefined8 *)*puVar2; } (**(code **)(*(longlong *)(param_1 + 0xa8) + 0x240)) ((longlong *)(param_1 + 0xa8),*(undefined4 *)puVar6,&DAT_1403440f0,local_res8); if (((local_50[0] != (undefined *)0x0) && (local_50[0] != PTR_DAT_140344098)) && (local_50[0] + -8 != (undefined *)0x0)) { uVar5 = FUN_14016d8c0(); local_40 = uVar5; FUN_14016db50(uVar5); local_38 = 1; piVar1 = (int *)(local_50[0] + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(local_50[0] + -8); } FUN_14016dbe0(uVar5); local_38 = 0; } puVar6 = local_res10; local_50[0] = PTR_DAT_140344098; if (puVar2 != (undefined8 *)0x0) { plVar3 = puVar2 + 1; *plVar3 = *plVar3 + -1; if (*plVar3 == 0) { if ((void *)*local_res10 != (void *)0x0) { operator_delete((void *)*local_res10); } FUN_14016d970(puVar6); } } FUN_14016dbe0(local_30); return; }