decomp DBCServer_Release and inspect/document database

This commit is contained in:
Benjamin Palko 2026-10-14 23:22:03 -04:00
parent 4b267cbe05
commit 7834b98bf0
28222 changed files with 843300 additions and 144 deletions

View file

@ -0,0 +1,97 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14008afb0 FUN_14008afb0
* Pseudocode, not original source. */
undefined8 FUN_14008afb0(longlong param_1,uint param_2,undefined8 param_3,char *param_4)
{
int *piVar1;
uint uVar2;
longlong lVar3;
short *psVar4;
int *piVar5;
ulonglong uVar6;
int *piVar7;
undefined8 uVar8;
uint *puVar9;
longlong lVar10;
short *psVar11;
ulonglong uVar12;
short *local_res8;
longlong local_48 [2];
int *local_38;
undefined1 local_30;
int *local_28;
undefined1 local_20;
local_48[1] = 0xfffffffffffffffe;
piVar5 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))();
local_38 = piVar5;
FUN_14006b350(piVar5);
local_30 = 1;
if (DAT_1401b42cf != '\0') {
(**(code **)(**(longlong **)(param_1 + 0x20) + 200))();
}
uVar12 = (ulonglong)*(uint *)(*(longlong *)(param_1 + 0x20) + 0xca0);
uVar6 = (ulonglong)param_2 % uVar12;
lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0xc80);
if ((lVar3 != 0) && (puVar9 = *(uint **)(lVar3 + uVar6 * 8), puVar9 != (uint *)0x0)) {
while (uVar2 = puVar9[8], (int)uVar6 == (int)((ulonglong)uVar2 % uVar12)) {
if (*puVar9 == param_2) {
lVar3 = *(longlong *)(puVar9 + 2);
if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x228) == 0)) {
*(undefined1 *)(lVar3 + 0x701) = 0;
if (*param_4 == '\0') {
if (*(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0) != 0) {
FUN_14006cb70(puVar9,(ulonglong)uVar2 % uVar12,uVar6,uVar12);
local_res8 = (short *)PTR_DAT_1401ac010;
uVar6 = 0;
if (*(longlong *)(lVar3 + 0x740) != 0) {
uVar6 = *(ulonglong *)(*(longlong *)(lVar3 + 0x740) + 8);
piVar5 = local_38;
}
uVar6 = uVar6 & 0xffffffff;
FUN_140053d20((longlong *)&local_res8,
L"클라이언트의 udp socket 생성실패. HostID=%d, udpSocketRefCount=%d"
,(ulonglong)*(uint *)(lVar3 + 0x6f8),uVar6);
psVar4 = local_res8;
psVar11 = local_res8;
if (local_res8 == (short *)0x0) {
psVar11 = (short *)PTR_DAT_1401ac010;
}
uVar8 = 0;
lVar10 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0);
FUN_1400cb700(lVar10,0,psVar11,uVar6);
if (((psVar4 != (short *)0x0) && (psVar4 != (short *)PTR_DAT_1401ac010)) &&
(psVar4 + -4 != (short *)0x0)) {
piVar7 = (int *)FUN_14006cb70(lVar10,uVar8,psVar11,uVar6);
local_28 = piVar7;
FUN_14006b350(piVar7);
local_20 = 1;
piVar1 = (int *)(psVar4 + -2);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14006cc60(psVar4 + -4);
}
FUN_14006b3e0((longlong)piVar7);
}
}
*(undefined1 *)(lVar3 + 0x700) = 0;
*(undefined1 *)(lVar3 + 0x702) = 1;
local_48[0] = 0;
FUN_1400a2a80((longlong *)(lVar3 + 0x740),local_48);
}
else {
FUN_140089920(*(undefined8 *)(param_1 + 0x20),lVar3,uVar6,uVar12);
}
}
break;
}
puVar9 = *(uint **)(puVar9 + 4);
if (puVar9 == (uint *)0x0) break;
}
}
uVar8 = FUN_14006b3e0((longlong)piVar5);
return CONCAT71((int7)((ulonglong)uVar8 >> 8),1);
}