server-re/decomp/DBCServer_Release_x64/full/functions/0x14004f8c0.c

114 lines
3.2 KiB
C

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