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,244 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401d5dd0 FUN_1401d5dd0
* Pseudocode, not original source. */
void FUN_1401d5dd0(longlong *param_1,undefined8 param_2,undefined4 param_3,longlong param_4,
int *param_5,undefined4 *param_6)
{
undefined8 *puVar1;
longlong lVar2;
longlong lVar3;
int iVar4;
int iVar5;
int iVar6;
int *piVar7;
undefined8 uVar8;
longlong *plVar9;
longlong lVar10;
int *piVar11;
longlong lVar12;
longlong lVar13;
longlong lVar14;
int iVar15;
int iVar16;
ulonglong uVar17;
ulonglong uVar18;
double dVar19;
longlong *local_res10;
undefined **local_c8;
undefined4 local_c0;
undefined2 local_bc;
undefined **local_b8;
undefined8 local_b0;
undefined8 local_a8;
undefined8 local_a0;
undefined8 local_98;
undefined8 local_90;
undefined4 local_88;
longlong local_80;
undefined4 local_78;
undefined4 local_74;
undefined1 local_68 [8];
undefined8 local_60;
undefined8 local_58;
undefined1 local_50;
lVar3 = (longlong)param_5;
local_60 = 0xfffffffffffffffe;
FUN_1401a7d90(param_5,0);
uVar17 = (ulonglong)*(int *)(lVar3 + 0x18);
FUN_1401becf0(&local_90);
local_80 = lVar3;
lVar14 = 0;
local_78 = 0;
local_74 = *(undefined4 *)((longlong)param_1 + 0x6a4);
local_90 = param_2;
local_88 = param_3;
iVar4 = FUN_1401bf780(&local_90,param_6);
if (-1 < iVar4) {
local_c8 = Proud::AddrPort::vftable;
local_c0 = *(undefined4 *)(param_4 + 8);
local_bc = *(undefined2 *)(param_4 + 0xc);
plVar9 = (longlong *)FUN_1401d0f00(param_1,&local_res10,&local_c8);
lVar13 = lVar14;
if ((longlong *)*plVar9 != (longlong *)0x0) {
lVar13 = *(longlong *)*plVar9;
}
if ((local_res10 != (longlong *)0x0) &&
(local_res10[1] = local_res10[1] + -1, local_res10[1] == 0)) {
puVar1 = (undefined8 *)*local_res10;
if (puVar1 != (undefined8 *)0x0) {
(**(code **)*puVar1)(puVar1,1);
}
FUN_14016d970(local_res10);
}
if (iVar4 < 1) {
return;
}
lVar12 = uVar17 * 0x48;
uVar18 = uVar17;
do {
lVar10 = 0;
if (((longlong)(uVar17 + lVar14) < 0) || (*(int *)(lVar3 + 0x18) <= (int)uVar18)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
lVar2 = *(longlong *)(lVar3 + 0x10);
*(undefined4 *)(lVar12 + 0x38 + lVar2) = *(undefined4 *)(param_4 + 8);
*(undefined2 *)(lVar12 + 0x3c + lVar2) = *(undefined2 *)(param_4 + 0xc);
if (lVar13 == 0) {
if ((longlong *)param_1[0x2ae] != (longlong *)0x0) {
lVar10 = *(longlong *)param_1[0x2ae];
}
if ((*(int *)(param_4 + 8) == *(int *)(lVar10 + 0xd0)) &&
(*(short *)(param_4 + 0xc) == *(short *)(lVar10 + 0xd4))) {
*(undefined4 *)(lVar12 + 0x28 + lVar2) = 1;
FUN_1401c7210(param_1);
}
else {
*(undefined4 *)(lVar12 + 0x28 + lVar2) = 0;
}
}
else {
*(undefined4 *)(lVar12 + 0x28 + lVar2) = *(undefined4 *)(lVar13 + 0x56c);
dVar19 = (double)(**(code **)(param_1[0xe] + 0x1c0))(param_1 + 0xe);
dVar19 = dVar19 - *(double *)(lVar13 + 0xc0);
if (0.0 < dVar19) {
*(double *)(lVar13 + 0x140) = dVar19;
}
uVar8 = (**(code **)(param_1[0xe] + 0x1c0))(param_1 + 0xe);
*(undefined8 *)(lVar13 + 0xc0) = uVar8;
*(int *)(lVar13 + 0x100) = *(int *)(lVar13 + 0x100) + 1;
}
uVar18 = (ulonglong)((int)uVar18 + 1);
lVar14 = lVar14 + 1;
lVar12 = lVar12 + 0x48;
} while (lVar14 < iVar4);
return;
}
FUN_14016d8c0();
param_5 = (int *)PTR_DAT_1403440a0;
iVar5 = FUN_14016d740(L"ExtractMessageFromUdpRecvQueue : addedCount < 0");
iVar16 = 0;
iVar4 = 0;
if ((param_5 != (int *)0x0) && (iVar4 = 0, param_5 != (int *)PTR_DAT_1403440a0)) {
iVar4 = param_5[-2];
}
iVar6 = iVar5;
if (((iVar5 <= iVar4) && (iVar6 = iVar16, param_5 != (int *)0x0)) &&
(param_5 != (int *)PTR_DAT_1403440a0)) {
iVar6 = param_5[-2];
}
iVar4 = 1;
if (1 < iVar6) {
iVar4 = iVar6;
}
iVar6 = iVar16;
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
iVar6 = param_5[-2];
}
iVar15 = 0;
if (iVar6 < iVar4) {
if (param_5 == (int *)0x0) {
param_5 = (int *)PTR_DAT_1403440a0;
}
if (iVar4 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
if (iVar4 == 0) {
FUN_14004eb70(&param_5);
}
else {
iVar6 = iVar16;
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
iVar6 = param_5[-2];
}
if (iVar4 != iVar6) {
piVar7 = (int *)FUN_14016d940((longlong)iVar4 * 2 + 10);
if (piVar7 != (int *)0x0) {
*piVar7 = 0;
piVar7[1] = 1;
}
*piVar7 = iVar4;
iVar6 = iVar15;
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
iVar6 = param_5[-2];
}
piVar11 = (int *)PTR_DAT_1403440a0;
if (iVar4 < iVar6) {
LAB_1401d5f52:
if (param_5 != (int *)0x0) {
piVar11 = param_5;
}
}
else {
iVar4 = iVar16;
if (param_5 != (int *)0x0) {
if (param_5 != (int *)PTR_DAT_1403440a0) {
iVar4 = param_5[-2];
}
goto LAB_1401d5f52;
}
}
FUN_14016d770(piVar7 + 2,piVar11,iVar4);
FUN_14004eb70(&param_5);
param_5 = piVar7 + 2;
}
}
}
FUN_14004e850(&param_5);
piVar7 = param_5;
if (param_5 == (int *)0x0) {
piVar7 = (int *)PTR_DAT_1403440a0;
}
FUN_14016d770(piVar7,L"ExtractMessageFromUdpRecvQueue : addedCount < 0",iVar5);
piVar7 = param_5;
if (param_5 == (int *)0x0) {
piVar7 = (int *)PTR_DAT_1403440a0;
}
iVar5 = FUN_14016d740(piVar7);
iVar4 = 0;
if (0 < iVar5) {
iVar4 = iVar5;
}
iVar5 = iVar15;
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
iVar5 = param_5[-2];
}
if ((iVar5 <= iVar4) && (iVar4 = iVar15, param_5 != (int *)0x0)) {
if (param_5 == (int *)PTR_DAT_1403440a0) goto LAB_1401d600a;
iVar4 = param_5[-2];
}
if (((param_5 != (int *)PTR_DAT_1403440a0) && (param_5 != (int *)0x0)) &&
(param_5 + -2 != (int *)0x0)) {
param_5[-2] = iVar4;
*(undefined2 *)((longlong)param_5 + (longlong)iVar4 * 2) = 0;
}
LAB_1401d600a:
local_b0 = 0;
local_a8 = 0;
local_a0 = 0;
local_98 = 0;
local_b8 = Proud::ByteArray::vftable;
uVar8 = FUN_140198f80(local_68,*param_6,(int)param_1[0x2af],&param_5,&local_b8);
(**(code **)(*param_1 + 0x88))(param_1,uVar8);
FUN_14019a9e0(&local_b8);
piVar7 = param_5;
if (((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) &&
(piVar11 = param_5 + -2, piVar11 != (int *)0x0)) {
uVar8 = FUN_14016d8c0();
local_58 = uVar8;
FUN_14016db50(uVar8);
local_50 = 1;
piVar7 = piVar7 + -1;
*piVar7 = *piVar7 + -1;
if (*piVar7 == 0) {
FUN_14016d970(piVar11);
}
FUN_14016dbe0(uVar8);
}
return;
}