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,137 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14009f660 FUN_14009f660
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x00014009f9c9) */
/* WARNING: Removing unreachable block (ram,0x00014009f9be) */
void FUN_14009f660(SIZE_T *param_1)
{
uint *puVar1;
ulonglong uVar2;
bool bVar3;
bool bVar4;
bool bVar5;
bool bVar6;
char cVar7;
int iVar8;
int iVar9;
int *piVar10;
int *piVar11;
longlong lVar12;
undefined8 *puVar13;
undefined8 *puVar14;
int *local_b0;
piVar10 = (int *)(**(code **)(*param_1 + 0x58))();
FUN_14006b350(piVar10);
if (DAT_1401b42cf != '\0') {
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::DisposeIssuedRemoteClients");
}
if (param_1[0x54] == 0) {
puVar13 = (undefined8 *)0x0;
}
else {
puVar13 = (undefined8 *)param_1[0x52];
}
do {
if (puVar13 == (undefined8 *)0x0) {
FUN_14006b3e0((longlong)piVar10);
return;
}
if (puVar13 == (undefined8 *)0x0) {
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80004005);
}
puVar1 = (uint *)*puVar13;
FUN_14009ece0(param_1,puVar1);
piVar11 = (int *)(**(code **)(*(longlong *)(puVar1 + 0x42) + 0x10))();
FUN_14006b350(piVar11);
local_b0 = (int *)0x0;
bVar6 = false;
if ((*(longlong **)(puVar1 + 0x1d0) != (longlong *)0x0) &&
(lVar12 = **(longlong **)(puVar1 + 0x1d0), lVar12 != 0)) {
local_b0 = (int *)(lVar12 + 0xa8);
FUN_14006b350(local_b0);
bVar6 = true;
}
FUN_14006b350((int *)(param_1 + 0xf3));
FUN_14006b350((int *)(param_1 + 0xfa));
iVar8 = FUN_1400d8950((longlong)(puVar1 + 0x30));
if ((*(char *)(*(longlong *)(puVar1 + 0x1d2) + 0x40) == '\0') &&
(**(char **)(puVar1 + 0x1d2) == '\0')) {
bVar3 = true;
}
else {
bVar3 = false;
}
if ((*(longlong **)(puVar1 + 0x1d8) == (longlong *)0x0) ||
(lVar12 = **(longlong **)(puVar1 + 0x1d8), lVar12 == 0)) {
LAB_14009f835:
bVar4 = true;
}
else {
if (*(char *)(lVar12 + 0x140) == '\0') {
if (*(longlong **)(puVar1 + 0x1d8) == (longlong *)0x0) {
lVar12 = 0;
}
else {
lVar12 = **(longlong **)(puVar1 + 0x1d8);
}
if (*(char *)(lVar12 + 0x100) == '\0') {
if (*(longlong **)(puVar1 + 0x1d8) == (longlong *)0x0) {
lVar12 = 0;
}
else {
lVar12 = **(longlong **)(puVar1 + 0x1d8);
}
iVar9 = FUN_1400d8950(lVar12 + 0x40);
if (iVar9 == 0) goto LAB_14009f835;
}
}
bVar4 = false;
}
if (((*(longlong *)(puVar1 + 8) == 0) &&
(cVar7 = (**(code **)(*(longlong *)(puVar1 + 2) + 0x18))(), cVar7 == '\0')) &&
(*(longlong *)(puVar1 + 0x48) == 0)) {
bVar5 = false;
}
else {
bVar5 = true;
}
FUN_14006b3e0((longlong)piVar11);
if (((iVar8 != 0) || (!bVar3)) || ((!bVar4 || (bVar5)))) {
puVar14 = (undefined8 *)puVar13[2];
}
else {
FUN_14008b1c0((longlong)param_1,puVar1);
puVar14 = (undefined8 *)puVar13[2];
FUN_1400a22a0((char *)(param_1 + 0x50),puVar13,'\0');
uVar2 = ((ulonglong)puVar1 & 0xffffffff) % (ulonglong)(uint)param_1[0x2ed];
if (param_1[0x2e9] != 0) {
puVar13 = *(undefined8 **)(param_1[0x2e9] + uVar2 * 8);
while( true ) {
if ((puVar13 == (undefined8 *)0x0) ||
((uint)uVar2 != *(uint *)(puVar13 + 4) % (uint)param_1[0x2ed])) goto LAB_14009f93f;
if ((uint *)*puVar13 == puVar1) break;
puVar13 = (undefined8 *)puVar13[2];
}
FUN_1400a22a0((char *)(param_1 + 0x2e8),puVar13,'\0');
}
LAB_14009f93f:
if (bVar6) {
FUN_14006b3e0((longlong)local_b0);
bVar6 = false;
}
(**(code **)(*(longlong *)puVar1 + 8))(puVar1,1);
}
FUN_14006b3e0((longlong)(param_1 + 0xfa));
FUN_14006b3e0((longlong)(param_1 + 0xf3));
puVar13 = puVar14;
if (bVar6) {
FUN_14006b3e0((longlong)local_b0);
}
} while( true );
}