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,139 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401fa820 FUN_1401fa820
* Pseudocode, not original source. */
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401fa820(longlong *param_1,longlong param_2,ulonglong *param_3,longlong param_4)
{
undefined *puVar1;
int *piVar2;
longlong lVar3;
int iVar4;
longlong lVar5;
undefined8 uVar6;
longlong *plVar7;
short sVar8;
undefined *puVar9;
bool bVar10;
undefined1 auStack_19b8 [32];
undefined *local_1998;
undefined1 local_1990;
undefined1 local_1988 [8];
undefined1 local_1980 [8];
longlong local_1978;
int local_196c;
undefined8 local_1960;
undefined1 local_1958;
undefined8 local_1950;
undefined1 local_1948 [3200];
undefined1 *local_cc8;
undefined4 local_cc0;
undefined4 local_cbc;
undefined1 local_cb8 [3216];
ulonglong local_28;
undefined8 uStack_20;
uStack_20 = 0x1401fa836;
local_1950 = 0xfffffffffffffffe;
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_19b8;
lVar3 = param_1[2];
if ((lVar3 != 0) && (*(int *)(lVar3 + 8) == 0)) {
bVar10 = *param_3 < *(ulonglong *)(lVar3 + 0x1c);
if ((*param_3 == *(ulonglong *)(lVar3 + 0x1c)) &&
(bVar10 = param_3[1] < *(ulonglong *)(lVar3 + 0x24),
param_3[1] == *(ulonglong *)(lVar3 + 0x24))) {
iVar4 = 0;
}
else {
iVar4 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
}
if ((iVar4 == 0) && (*(int *)(lVar3 + 0x18) < 1)) {
plVar7 = *(longlong **)(*(longlong *)(*param_1 + 0x670) + 0x1570);
sVar8 = DAT_140344454;
iVar4 = DAT_140344450;
if ((plVar7 != (longlong *)0x0) && (*plVar7 != 0)) {
lVar5 = 0;
if (plVar7 != (longlong *)0x0) {
lVar5 = *plVar7;
}
sVar8 = *(short *)(lVar5 + 0xd4);
iVar4 = *(int *)(lVar5 + 0xd0);
}
if ((((iVar4 == *(int *)(param_2 + 0x38)) && (sVar8 == *(short *)(param_2 + 0x3c))) &&
(plVar7 = *(longlong **)(*param_1 + 0x18), plVar7 != (longlong *)0x0)) && (*plVar7 != 0))
{
FUN_14016b440(local_1988);
FUN_14016abe0(local_1988);
FUN_14016b5a0(local_1988,0x800);
FUN_14016b5a0(local_1988,0);
FUN_14004eef0(local_1988,0x12);
if ((*(longlong **)(*param_1 + 0x18) == (longlong *)0x0) ||
(lVar5 = **(longlong **)(*param_1 + 0x18), lVar5 == 0)) {
lVar5 = 0;
}
else {
lVar5 = lVar5 + -0x40;
}
FUN_14016c2f0(local_1988,lVar5 + 0x128);
FUN_14016c2f0(local_1988,param_4);
FUN_140153c40(local_1988,*(undefined4 *)(*param_1 + 0x56c));
local_cbc = 200;
local_cc0 = 0;
local_cc8 = local_1948;
FUN_14016e080(local_cb8,local_1988);
FUN_14016ded0(local_1948,local_cb8);
FUN_14016ddc0();
if ((*(longlong **)(*param_1 + 0x18) == (longlong *)0x0) ||
(lVar5 = **(longlong **)(*param_1 + 0x18), lVar5 == 0)) {
lVar5 = 0;
}
else {
lVar5 = lVar5 + -0x40;
}
*(undefined4 *)(lVar5 + 0x140) = *(undefined4 *)(param_4 + 8);
*(undefined2 *)(lVar5 + 0x144) = *(undefined2 *)(param_4 + 0xc);
local_1998 = (undefined *)0x0;
local_1990 = 1;
uVar6 = FUN_1401c71f0(*(undefined8 *)(*param_1 + 0x670));
FUN_1401f9d30(uVar6,local_1948,&local_1998);
if ((*(char *)(*(longlong *)(*param_1 + 0x670) + 0x1790) != '\0') ||
(*(int *)(*(longlong *)(*param_1 + 0x670) + 0x6c8) != 0)) {
plVar7 = (longlong *)FUN_1401705d0(param_4,&local_1998);
puVar9 = (undefined *)*plVar7;
if ((undefined *)*plVar7 == (undefined *)0x0) {
puVar9 = PTR_DAT_1403440a0;
}
FUN_1401d4c70(*(undefined8 *)(*param_1 + 0x670),1,
L"Message_PeerUdp_ServerHolepunchAck. AddrOfHereAtServer=%s",puVar9);
puVar9 = local_1998;
if (((local_1998 != (undefined *)0x0) && (local_1998 != PTR_DAT_1403440a0)) &&
(puVar1 = local_1998 + -8, puVar1 != (undefined *)0x0)) {
uVar6 = FUN_14016d8c0();
local_1960 = uVar6;
FUN_14016db50(uVar6);
local_1958 = 1;
piVar2 = (int *)(puVar9 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14016d970(puVar1);
}
FUN_14016dbe0(uVar6);
}
}
*(int *)(lVar3 + 0x18) = *(int *)(lVar3 + 0x18) + 1;
FUN_14016ddc0(local_1948);
local_1998 = local_1980;
FUN_14016d0e0(local_1980);
if ((local_1978 != 0) && (local_196c < 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
}
}
}
return;
}