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,205 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400c2ec0 FUN_1400c2ec0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1400c2ec0(longlong param_1,uint *param_2,longlong param_3,TypeDescriptor *param_4)
{
undefined **ppuVar1;
undefined **ppuVar2;
int iVar3;
undefined8 uVar4;
ulonglong uVar5;
int *piVar6;
int *piVar7;
longlong lVar8;
longlong *plVar9;
longlong *plVar10;
int **ppiVar11;
SIZE_T SVar12;
undefined ***pppuVar13;
int *piVar14;
undefined *puVar15;
bool bVar16;
undefined1 auStack_da8 [32];
undefined *local_d88;
undefined **local_d78;
undefined4 local_d70;
undefined2 local_d6c;
undefined **local_d68;
undefined4 local_d60;
undefined2 local_d5c;
int **local_d58;
undefined1 local_d50;
undefined *local_d48;
int *local_d40;
undefined1 local_d38;
int local_d30 [2];
undefined *local_d28;
longlong local_d20;
int local_d14;
undefined8 local_d08;
int *local_d00;
undefined1 local_cf8;
undefined **local_ce8;
undefined8 uStack_ce0;
undefined1 local_cd8 [3216];
ulonglong local_48;
local_d08 = 0xfffffffffffffffe;
local_48 = DAT_1401ac5a0 ^ (ulonglong)auStack_da8;
FUN_1400cf890();
local_d68 = Proud::AddrPort::vftable;
local_d60 = 0;
local_d5c = 0;
local_d78 = Proud::AddrPort::vftable;
local_d70 = 0;
local_d6c = 0;
local_ce8 = (undefined **)0x0;
uStack_ce0 = 0;
SVar12 = 0x10;
uVar4 = FUN_1400bc930(param_2,&local_ce8,0x10);
if ((char)uVar4 == '\0') {
return;
}
uVar5 = FUN_1400bd360(param_2,(longlong)&local_d68);
if ((char)uVar5 != '\0') {
uVar5 = FUN_1400bd360(param_2,(longlong)&local_d78);
if ((char)uVar5 == '\0') {
return;
}
piVar6 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
local_d00 = piVar6;
FUN_14006b350(piVar6);
local_cf8 = 1;
if (DAT_1401b42cf != '\0') {
SVar12 = **(SIZE_T **)(param_1 + 0x148);
(**(code **)(SVar12 + 200))
(*(SIZE_T **)(param_1 + 0x148),
L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_NotifyHolepunchSuccess");
}
bVar16 = *(undefined ***)(param_3 + 0x728) < local_ce8;
if ((*(undefined ***)(param_3 + 0x728) == local_ce8) &&
(bVar16 = *(ulonglong *)(param_3 + 0x730) < uStack_ce0,
*(ulonglong *)(param_3 + 0x730) == uStack_ce0)) {
iVar3 = 0;
}
else {
iVar3 = (1 - (uint)bVar16) - (uint)(bVar16 != 0);
}
if ((iVar3 == 0) && (*(char *)(param_3 + 0x700) == '\0')) {
*(undefined1 *)(param_3 + 0x700) = 1;
uVar4 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))();
*(undefined8 *)(param_3 + 0x198) = uVar4;
uVar4 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))();
*(undefined8 *)(param_3 + 0x1b8) = uVar4;
local_ce8 = Proud::AddrPort::vftable;
uStack_ce0._0_6_ = CONCAT24(local_d6c,local_d70);
FUN_1400da400(param_3 + 0x700,(longlong)&local_ce8);
*(undefined4 *)(param_3 + 0x720) = local_d60;
*(undefined2 *)(param_3 + 0x724) = local_d5c;
lVar8 = param_3;
FUN_140088db0(*(longlong *)(param_1 + 0x148),param_3,SVar12,param_4);
FUN_1400bca00(local_d30);
FUN_1400bc4d0((longlong)local_d30,lVar8,SVar12,param_4);
FUN_1400bcb60(local_d30,0x800,SVar12,param_4);
uVar4 = 0;
FUN_1400bcb60(local_d30,0,SVar12,param_4);
FUN_140054a10((longlong)local_d30,CONCAT71((int7)((ulonglong)uVar4 >> 8),0xf),SVar12,param_4);
local_ce8 = *(undefined ***)(param_3 + 0x728);
uStack_ce0 = *(undefined8 *)(param_3 + 0x730);
FUN_14005c0c0((longlong)local_d30,&local_ce8,SVar12,param_4);
piVar7 = (int *)(**(code **)(*(longlong *)(param_3 + 0x108) + 0x10))();
local_d40 = piVar7;
FUN_14006b350(piVar7);
local_d38 = 1;
lVar8 = FUN_14007db50((longlong)local_cd8,(longlong)local_d30,SVar12);
local_ce8 = (undefined **)0x0;
uStack_ce0 = CONCAT71(uStack_ce0._1_7_,1);
pppuVar13 = &local_ce8;
FUN_1400d87b0(*(char **)(param_3 + 0x748),lVar8,(SIZE_T *)pppuVar13,param_4);
FUN_14007ca50((longlong)local_cd8,lVar8,pppuVar13,param_4);
FUN_14006b3e0((longlong)piVar7);
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0) {
FUN_14006cb70(piVar7,lVar8,pppuVar13,param_4);
local_d40 = (int *)PTR_DAT_1401ac010;
plVar9 = FUN_140070660((longlong)&local_d78,(longlong *)&local_ce8,pppuVar13,param_4);
plVar10 = FUN_140070660((longlong)&local_d68,(longlong *)&local_d48,pppuVar13,param_4);
local_d88 = (undefined *)*plVar9;
if ((undefined *)*plVar9 == (undefined *)0x0) {
local_d88 = PTR_DAT_1401ac010;
}
puVar15 = (undefined *)*plVar10;
if ((undefined *)*plVar10 == (undefined *)0x0) {
puVar15 = PTR_DAT_1401ac010;
}
uVar5 = (ulonglong)*(uint *)(param_3 + 0x6f8);
ppiVar11 = &local_d40;
FUN_140053d20((longlong *)ppiVar11,
L"Client %d가 서버와의 UDP 홀펀칭 성공: Client local Addr=%s,Client addr at server=%s"
,uVar5,puVar15);
if (((local_d48 != (undefined *)0x0) && (local_d48 != PTR_DAT_1401ac010)) &&
(local_d48 + -8 != (undefined *)0x0)) {
ppiVar11 = (int **)FUN_14006cb70(ppiVar11,PTR_DAT_1401ac010,uVar5,puVar15);
local_d58 = ppiVar11;
FUN_14006b350((int *)ppiVar11);
local_d50 = 1;
piVar7 = (int *)(local_d48 + -4);
*piVar7 = *piVar7 + -1;
if (*piVar7 == 0) {
FUN_14006cc60(local_d48 + -8);
}
FUN_14006b3e0((longlong)ppiVar11);
}
ppuVar2 = local_ce8;
local_d48 = PTR_DAT_1401ac010;
if (((local_ce8 != (undefined **)0x0) && (local_ce8 != (undefined **)PTR_DAT_1401ac010)) &&
(ppuVar1 = local_ce8 + -1, ppuVar1 != (undefined **)0x0)) {
ppiVar11 = (int **)FUN_14006cb70(ppiVar11,PTR_DAT_1401ac010,uVar5,puVar15);
local_d58 = ppiVar11;
FUN_14006b350((int *)ppiVar11);
local_d50 = 1;
piVar7 = (int *)((longlong)ppuVar2 + -4);
*piVar7 = *piVar7 + -1;
if (*piVar7 == 0) {
FUN_14006cc60(ppuVar1);
}
FUN_14006b3e0((longlong)ppiVar11);
}
piVar7 = local_d40;
piVar14 = local_d40;
if (local_d40 == (int *)0x0) {
piVar14 = (int *)PTR_DAT_1401ac010;
}
uVar4 = 1;
lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0);
FUN_1400cb700(lVar8,1,(short *)piVar14,puVar15);
if (((piVar7 != (int *)0x0) && (piVar7 != (int *)PTR_DAT_1401ac010)) &&
(piVar7 + -2 != (int *)0x0)) {
ppiVar11 = (int **)FUN_14006cb70(lVar8,uVar4,piVar14,puVar15);
local_d58 = ppiVar11;
FUN_14006b350((int *)ppiVar11);
local_d50 = 1;
piVar14 = piVar7 + -1;
*piVar14 = *piVar14 + -1;
if (*piVar14 == 0) {
FUN_14006cc60(piVar7 + -2);
}
FUN_14006b3e0((longlong)ppiVar11);
}
}
local_ce8 = &local_d28;
FUN_1400d1800((longlong *)&local_d28);
if ((local_d20 != 0) && (local_d14 < 0)) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
}
FUN_14006b3e0((longlong)piVar6);
return;
}
return;
}