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,475 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14009e440 FUN_14009e440
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x00014009e5a1) */
/* WARNING: Removing unreachable block (ram,0x00014009e5ad) */
/* WARNING: Removing unreachable block (ram,0x00014009e5a5) */
/* WARNING: Removing unreachable block (ram,0x00014009e5b3) */
/* WARNING: Removing unreachable block (ram,0x00014009e543) */
/* WARNING: Removing unreachable block (ram,0x00014009e54f) */
/* WARNING: Removing unreachable block (ram,0x00014009e547) */
/* WARNING: Removing unreachable block (ram,0x00014009e555) */
/* WARNING: Removing unreachable block (ram,0x00014009e601) */
/* WARNING: Removing unreachable block (ram,0x00014009e60d) */
/* WARNING: Removing unreachable block (ram,0x00014009e606) */
/* WARNING: Removing unreachable block (ram,0x00014009e613) */
void FUN_14009e440(SIZE_T *param_1,undefined8 param_2,SIZE_T param_3,undefined ***param_4)
{
undefined **ppuVar1;
undefined8 *puVar2;
longlong *plVar3;
uint uVar4;
int iVar5;
int iVar6;
int iVar7;
longlong *plVar8;
undefined ***pppuVar9;
undefined *puVar10;
longlong *plVar11;
undefined ***pppuVar12;
undefined ***pppuVar13;
undefined8 uVar14;
undefined **ppuVar15;
undefined **ppuVar16;
undefined ***pppuVar17;
longlong lVar18;
longlong lVar19;
longlong *plVar20;
undefined ***pppuVar21;
size_t _Size;
undefined ***pppuVar22;
undefined ***pppuVar23;
int iVar24;
undefined ***local_res10;
undefined ***local_res18;
undefined **local_168;
undefined ***local_160;
undefined **local_158;
undefined ***local_150;
undefined ***local_148;
undefined8 local_140;
undefined8 local_138;
undefined8 local_130;
longlong local_128;
longlong local_120;
ulonglong local_118;
longlong *local_110;
undefined ***local_108;
undefined4 local_fc;
undefined8 local_f8;
longlong local_f0;
longlong local_e8;
ulonglong local_e0;
undefined ***local_d8;
undefined ***local_d0;
undefined4 local_c4;
undefined **local_c0;
undefined ***local_b8;
undefined ***local_b0;
undefined8 local_a8;
undefined8 local_a0;
uint local_98 [2];
longlong local_90;
longlong local_88;
undefined4 local_80;
int local_7c;
int *local_70;
undefined1 local_68;
undefined8 local_60;
undefined8 local_58 [4];
local_60 = 0xfffffffffffffffe;
local_70 = (int *)(**(code **)(*param_1 + 0x58))();
FUN_14006b350(local_70);
local_68 = 1;
if (DAT_1401b42cf != '\0') {
param_3 = *param_1;
(**(code **)(param_3 + 200))(param_1,L"Proud::CNetServerImpl::TestReliableUdpFrame");
}
plVar8 = FUN_14006fb50(local_58);
pppuVar9 = (undefined ***)FUN_14006ccc0(0x800,plVar8,param_3,param_4);
pppuVar23 = (undefined ***)0x0;
local_150 = (undefined ***)0x0;
local_148 = (undefined ***)0x0;
local_140 = 0;
local_138 = 0;
local_158 = Proud::CUncompressedFrameNumberArray::vftable;
local_res18 = pppuVar9;
if (pppuVar9 == (undefined ***)0x0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
local_150 = pppuVar9;
FUN_14007b600((longlong)&local_158,1,param_3);
lVar18 = (longlong)(int)local_140;
pppuVar12 = local_148;
if ((int)local_140 == 0) {
pppuVar12 = pppuVar23;
}
*(uint *)pppuVar12 = 5;
if ((int)local_140 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
FUN_14007b600((longlong)&local_158,(int)local_140 + 1,param_3);
lVar19 = (longlong)(int)local_140;
pppuVar12 = local_148;
if ((int)local_140 == 0) {
pppuVar12 = pppuVar23;
}
*(uint *)((longlong)pppuVar12 + lVar18 * 4) = 1;
if ((int)local_140 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
FUN_14007b600((longlong)&local_158,(int)local_140 + 1,param_3);
lVar18 = (longlong)(int)local_140;
pppuVar12 = local_148;
if ((int)local_140 == 0) {
pppuVar12 = pppuVar23;
}
*(uint *)((longlong)pppuVar12 + lVar19 * 4) = 2;
if ((int)local_140 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
FUN_14007b600((longlong)&local_158,(int)local_140 + 1,param_3);
pppuVar23 = local_148;
iVar5 = (int)local_140;
lVar19 = (longlong)(int)local_140;
pppuVar12 = local_148;
if ((int)local_140 == 0) {
pppuVar12 = (undefined ***)0x0;
}
*(uint *)((longlong)pppuVar12 + lVar18 * 4) = 4;
pppuVar12 = local_148;
if ((int)local_140 == 0) {
pppuVar12 = (undefined ***)0x0;
}
_Size = 0;
uVar14 = 4;
FUN_14007bfa0((longlong)pppuVar12,4,0);
if (iVar5 < 1) {
/* WARNING: Subroutine does not return */
FUN_14006be30(pppuVar12,uVar14,_Size,param_4);
}
if (*(uint *)pppuVar23 == 1) {
if (iVar5 < 2) {
/* WARNING: Subroutine does not return */
FUN_14006be30(pppuVar12,uVar14,_Size,param_4);
}
if (*(uint *)((longlong)pppuVar23 + 4) != 2) goto LAB_14009e697;
if (iVar5 < 3) {
/* WARNING: Subroutine does not return */
FUN_14006be30(pppuVar12,uVar14,_Size,param_4);
}
if (*(uint *)(pppuVar23 + 1) != 4) goto LAB_14009e697;
if (iVar5 < 4) {
/* WARNING: Subroutine does not return */
FUN_14006be30(pppuVar12,uVar14,_Size,param_4);
}
if (*(uint *)((longlong)pppuVar23 + 0xc) != 5) goto LAB_14009e697;
}
else {
LAB_14009e697:
FUN_14006cb70(pppuVar12,uVar14,_Size,param_4);
local_res10 = (undefined ***)PTR_DAT_1401ac010;
uVar4 = FUN_14006c9f0(L"Proud.QuickSort() failed!");
puVar10 = FUN_140002f30((longlong *)&local_res10,uVar4);
_Size = (size_t)uVar4;
FUN_14006ca20(puVar10,L"Proud.QuickSort() failed!",uVar4);
FUN_140003010((longlong *)&local_res10);
FUN_14009b550(param_1,(wchar_t *)&local_res10,_Size,param_4);
}
plVar20 = (longlong *)0x0;
local_118 = 0;
local_120 = 0;
local_128 = 0;
local_110 = (longlong *)0x0;
local_130 = 0;
local_fc = 0;
pppuVar12 = &local_168;
local_108 = pppuVar9;
plVar11 = FUN_14008a380((longlong *)pppuVar12,(longlong *)pppuVar9,_Size,param_4);
plVar3 = local_110;
plVar8 = (longlong *)*plVar11;
if (plVar8 != (longlong *)0x0) {
plVar8[1] = plVar8[1] + 1;
plVar20 = plVar8;
}
if (local_110 != (longlong *)0x0) {
plVar8 = local_110 + 1;
*plVar8 = *plVar8 + -1;
if (*plVar8 == 0) {
puVar2 = (undefined8 *)*local_110;
local_res10 = local_108;
*puVar2 = Proud::CFastArray<Proud::CCompressedFrameNumbers::Elem,1>::vftable;
if ((LPVOID)puVar2[2] != (LPVOID)0x0) {
if ((longlong *)puVar2[1] == (longlong *)0x0) {
FUN_14006cc60((LPVOID)puVar2[2]);
}
else {
(**(code **)(*(longlong *)puVar2[1] + 0x18))();
}
}
(*(code *)(*local_res10)[3])(local_res10,puVar2);
(*(code *)(*local_108)[3])(local_108,plVar3);
pppuVar12 = local_108;
}
}
pppuVar13 = local_160;
ppuVar15 = local_168;
pppuVar21 = (undefined ***)0x0;
local_108 = (undefined ***)plVar11[1];
ppuVar16 = Proud::CFastArray<Proud::CCompressedFrameNumbers::Elem,1>::vftable;
pppuVar17 = pppuVar21;
pppuVar22 = pppuVar21;
local_110 = plVar20;
if (local_168 != (undefined **)0x0) {
ppuVar1 = local_168 + 1;
*ppuVar1 = *ppuVar1 + -1;
if (*ppuVar1 == (undefined *)0x0) {
puVar2 = (undefined8 *)*local_168;
*puVar2 = Proud::CFastArray<Proud::CCompressedFrameNumbers::Elem,1>::vftable;
if ((LPVOID)puVar2[2] != (LPVOID)0x0) {
if ((longlong *)puVar2[1] == (longlong *)0x0) {
FUN_14006cc60((LPVOID)puVar2[2]);
}
else {
(**(code **)(*(longlong *)puVar2[1] + 0x18))();
}
}
(*(code *)(*pppuVar13)[3])(pppuVar13,puVar2);
pppuVar12 = local_160;
(*(code *)(*local_160)[3])();
ppuVar16 = ppuVar15;
}
}
do {
if (((longlong)pppuVar22 < 0) || (iVar5 <= (int)pppuVar17)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(pppuVar12,ppuVar16,_Size,param_4);
}
pppuVar12 = pppuVar21;
if (local_110 != (longlong *)0x0) {
pppuVar12 = (undefined ***)*local_110;
}
ppuVar16 = (undefined **)(ulonglong)*(uint *)((longlong)pppuVar23 + (longlong)pppuVar22 * 4);
FUN_1400df690((longlong)pppuVar12,ppuVar16,_Size,param_4);
uVar4 = (int)pppuVar17 + 1;
pppuVar17 = (undefined ***)(ulonglong)uVar4;
pppuVar22 = (undefined ***)((longlong)pppuVar22 + 1);
} while ((int)uVar4 < iVar5);
FUN_1400bca00(local_98);
FUN_1400bc4d0((longlong)local_98,ppuVar16,_Size,param_4);
pppuVar12 = pppuVar21;
if (local_110 != (longlong *)0x0) {
pppuVar12 = (undefined ***)*local_110;
}
FUN_1400df900((longlong)pppuVar12,(longlong)local_98,_Size,param_4);
FUN_1400bc600((int *)local_98,0,_Size,param_4);
local_e0 = 0;
local_e8 = 0;
local_f0 = 0;
local_d8 = (undefined ***)0x0;
local_f8 = 0;
local_c4 = 0;
local_d0 = pppuVar9;
local_res10 = (undefined ***)
FUN_14008a380((longlong *)&local_168,(longlong *)pppuVar9,_Size,param_4);
pppuVar17 = local_d0;
pppuVar13 = local_d8;
pppuVar12 = (undefined ***)*local_res10;
if (pppuVar12 != (undefined ***)0x0) {
pppuVar12[1] = (undefined **)((longlong)pppuVar12[1] + 1);
pppuVar21 = pppuVar12;
}
if (local_d8 != (undefined ***)0x0) {
pppuVar12 = local_d8 + 1;
*pppuVar12 = (undefined **)((longlong)*pppuVar12 + -1);
if (*pppuVar12 == (undefined **)0x0) {
ppuVar15 = *local_d8;
*ppuVar15 = (undefined *)Proud::CFastArray<Proud::CCompressedFrameNumbers::Elem,1>::vftable;
if (ppuVar15[2] != (undefined *)0x0) {
if ((longlong *)ppuVar15[1] == (longlong *)0x0) {
FUN_14006cc60(ppuVar15[2]);
}
else {
(**(code **)(*(longlong *)ppuVar15[1] + 0x18))();
}
}
(*(code *)(*pppuVar17)[3])(pppuVar17,ppuVar15);
(*(code *)(*local_d0)[3])(local_d0,pppuVar13);
}
}
pppuVar12 = local_160;
pppuVar13 = (undefined ***)0x0;
local_d0 = (undefined ***)local_res10[1];
local_d8 = pppuVar21;
if (local_168 != (undefined **)0x0) {
ppuVar15 = local_168 + 1;
*ppuVar15 = *ppuVar15 + -1;
if (*ppuVar15 == (undefined *)0x0) {
puVar2 = (undefined8 *)*local_168;
*puVar2 = Proud::CFastArray<Proud::CCompressedFrameNumbers::Elem,1>::vftable;
if ((LPVOID)puVar2[2] != (LPVOID)0x0) {
if ((longlong *)puVar2[1] == (longlong *)0x0) {
FUN_14006cc60((LPVOID)puVar2[2]);
}
else {
(**(code **)(*(longlong *)puVar2[1] + 0x18))();
}
}
(*(code *)(*pppuVar12)[3])(pppuVar12,puVar2);
(*(code *)(*local_160)[3])(local_160,local_168);
}
}
pppuVar12 = pppuVar13;
if (local_d8 != (undefined ***)0x0) {
pppuVar12 = (undefined ***)*local_d8;
}
FUN_1400df450((uint *)pppuVar12,local_98,_Size,param_4);
local_b0 = (undefined ***)0x0;
local_a8 = 0;
local_a0 = 0;
local_c0 = Proud::CUncompressedFrameNumberArray::vftable;
pppuVar12 = pppuVar13;
if (local_d8 != (undefined ***)0x0) {
pppuVar12 = (undefined ***)*local_d8;
}
pppuVar17 = &local_c0;
local_b8 = pppuVar9;
FUN_1400df7e0((longlong)pppuVar12,(longlong)pppuVar17,_Size,param_4);
pppuVar21 = local_b0;
iVar24 = 0;
if (iVar5 == (int)local_a8) {
pppuVar12 = pppuVar23;
if (iVar5 == 0) {
pppuVar12 = pppuVar13;
}
pppuVar17 = local_b0;
if ((int)local_a8 == 0) {
pppuVar17 = pppuVar13;
}
_Size = lVar19 << 2;
iVar5 = memcmp(pppuVar12,pppuVar17,_Size);
if (iVar5 == 0) goto LAB_14009eb7a;
}
FUN_14006cb70(pppuVar12,pppuVar17,_Size,param_4);
local_res10 = (undefined ***)PTR_DAT_1401ac010;
iVar6 = FUN_14006c9f0(L"FrameNumberList pack/unpack failed!");
iVar5 = iVar24;
if ((local_res10 != (undefined ***)0x0) && (local_res10 != (undefined ***)PTR_DAT_1401ac010)) {
iVar5 = *(int *)(local_res10 + -1);
}
iVar7 = iVar6;
if (((iVar6 <= iVar5) && (iVar7 = iVar24, local_res10 != (undefined ***)0x0)) &&
(local_res10 != (undefined ***)PTR_DAT_1401ac010)) {
iVar7 = *(int *)(local_res10 + -1);
}
iVar5 = 1;
if (1 < iVar7) {
iVar5 = iVar7;
}
iVar7 = iVar24;
if ((local_res10 != (undefined ***)0x0) && (local_res10 != (undefined ***)PTR_DAT_1401ac010)) {
iVar7 = *(int *)(local_res10 + -1);
}
if (iVar7 < iVar5) {
FUN_140002d60((longlong *)&local_res10,iVar5);
}
FUN_140002e40((longlong *)&local_res10);
pppuVar12 = local_res10;
if (local_res10 == (undefined ***)0x0) {
pppuVar12 = (undefined ***)PTR_DAT_1401ac010;
}
FUN_14006ca20(pppuVar12,L"FrameNumberList pack/unpack failed!",iVar6);
pppuVar12 = local_res10;
if (local_res10 == (undefined ***)0x0) {
pppuVar12 = (undefined ***)PTR_DAT_1401ac010;
}
uVar4 = FUN_14006c9f0((short *)pppuVar12);
puVar10 = PTR_DAT_1401ac010;
if (0 < (int)uVar4) {
pppuVar13 = (undefined ***)(ulonglong)uVar4;
}
iVar5 = (int)pppuVar13;
if ((local_res10 != (undefined ***)0x0) && (local_res10 != (undefined ***)PTR_DAT_1401ac010)) {
iVar24 = *(int *)(local_res10 + -1);
}
if ((iVar5 < iVar24) || (iVar5 = 0, local_res10 == (undefined ***)0x0)) {
LAB_14009eb45:
if (((local_res10 != (undefined ***)PTR_DAT_1401ac010) && (local_res10 != (undefined ***)0x0))
&& (local_res10 + -1 != (undefined ***)0x0)) {
*(int *)(local_res10 + -1) = iVar5;
*(undefined2 *)((longlong)local_res10 + (longlong)iVar5 * 2) = 0;
}
}
else if (local_res10 != (undefined ***)PTR_DAT_1401ac010) {
iVar5 = *(int *)(local_res10 + -1);
goto LAB_14009eb45;
}
FUN_14009b550(param_1,(wchar_t *)&local_res10,(SIZE_T)puVar10,param_4);
pppuVar21 = local_b0;
LAB_14009eb7a:
local_c0 = Proud::CFastArray<Proud::FrameNumber,1>::vftable;
if (pppuVar21 != (undefined ***)0x0) {
if (local_b8 == (undefined ***)0x0) {
FUN_14006cc60(pppuVar21);
}
else {
(*(code *)(*local_b8)[3])(local_b8,pppuVar21);
}
}
if (local_d8 != (undefined ***)0x0) {
pppuVar12 = local_d8 + 1;
*pppuVar12 = (undefined **)((longlong)*pppuVar12 + -1);
if (*pppuVar12 == (undefined **)0x0) {
FUN_140080140((longlong)&local_d8,(longlong *)local_d8);
}
}
FUN_1400d1800(&local_f0);
if (local_e8 != 0) {
if ((longlong)local_e0 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
local_e0 = local_e0 & 0xffffffff00000000;
}
FUN_1400d1800(&local_90);
if (local_88 != 0) {
if (local_7c < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
local_80 = 0;
}
if (local_110 != (longlong *)0x0) {
plVar8 = local_110 + 1;
*plVar8 = *plVar8 + -1;
if (*plVar8 == 0) {
FUN_140080140((longlong)&local_110,local_110);
}
}
FUN_1400d1800(&local_128);
if (local_120 != 0) {
if ((longlong)local_118 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
local_118 = local_118 & 0xffffffff00000000;
}
if (local_150 == (undefined ***)0x0) {
FUN_14006cc60(pppuVar23);
}
else {
(*(code *)(*local_150)[3])(local_150,pppuVar23);
}
(*(code *)**pppuVar9)(pppuVar9,1);
FUN_14006b3e0((longlong)local_70);
return;
}