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,141 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400c68e0 FUN_1400c68e0
* Pseudocode, not original source. */
void FUN_1400c68e0(int *param_1,wchar_t *param_2,longlong *param_3,undefined8 param_4)
{
undefined8 *puVar1;
int *piVar2;
wchar_t *pwVar3;
undefined8 *puVar4;
int iVar5;
longlong lVar6;
piVar2 = (int *)(**(code **)(**(longlong **)(param_1 + 0x52) + 0x58))();
FUN_14006b350(piVar2);
if (DAT_1401b42cf != '\0') {
param_3 = (longlong *)**(longlong **)(param_1 + 0x52);
param_2 = L"Proud::CNetThreads_S::~CNetThreads_S";
(*(code *)param_3[0x19])();
}
*(undefined1 *)(param_1 + 0x50) = 1;
FUN_14006b3e0((longlong)piVar2);
puVar4 = (undefined8 *)0x0;
if (*(undefined8 **)(param_1 + 0x22) != (undefined8 *)0x0) {
puVar4 = (undefined8 *)**(undefined8 **)(param_1 + 0x22);
}
FUN_140074120(puVar4);
if (*(undefined8 **)(param_1 + 0x24) == (undefined8 *)0x0) {
puVar4 = (undefined8 *)0x0;
}
else {
puVar4 = (undefined8 *)**(undefined8 **)(param_1 + 0x24);
}
FUN_140074120(puVar4);
piVar2 = param_1;
FUN_14006b350(param_1);
iVar5 = 0;
lVar6 = 0;
if (0 < param_1[0x1e]) {
do {
if ((lVar6 < 0) || (param_1[0x1e] <= iVar5)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(piVar2,param_2,param_3,param_4);
}
puVar4 = *(undefined8 **)(*(longlong *)(param_1 + 0x1c) + lVar6 * 8);
piVar2 = (int *)0x0;
if (puVar4 != (undefined8 *)0x0) {
piVar2 = (int *)*puVar4;
}
FUN_140074120((undefined8 *)piVar2);
iVar5 = iVar5 + 1;
lVar6 = lVar6 + 1;
} while (iVar5 < param_1[0x1e]);
}
piVar2 = param_1;
FUN_14006b3e0((longlong)param_1);
iVar5 = 0;
lVar6 = 0;
if (0 < param_1[0x14]) {
do {
if ((lVar6 < 0) || (param_1[0x14] <= iVar5)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(piVar2,param_2,param_3,param_4);
}
puVar4 = *(undefined8 **)(*(longlong *)(param_1 + 0x12) + lVar6 * 8);
piVar2 = (int *)0x0;
if (puVar4 != (undefined8 *)0x0) {
piVar2 = (int *)*puVar4;
}
FUN_140074120((undefined8 *)piVar2);
iVar5 = iVar5 + 1;
lVar6 = lVar6 + 1;
} while (iVar5 < param_1[0x14]);
}
CloseHandle(*(HANDLE *)(param_1 + 0x60));
FUN_1400c1f40((longlong *)(param_1 + 0x5a));
FUN_140074210((UINT *)(param_1 + 0x56));
FUN_140076ce0((undefined8 *)(param_1 + 0x54));
if ((*(longlong *)(param_1 + 0x24) != 0) &&
(*(longlong *)(*(longlong *)(param_1 + 0x24) + 8) =
*(longlong *)(*(longlong *)(param_1 + 0x24) + 8) + -1,
*(longlong *)(*(longlong *)(param_1 + 0x24) + 8) == 0)) {
puVar4 = *(undefined8 **)(param_1 + 0x24);
puVar1 = (undefined8 *)*puVar4;
if (puVar1 != (undefined8 *)0x0) {
FUN_1400741a0(puVar1);
operator_delete(puVar1);
}
FUN_14006cc60(puVar4);
}
if ((*(longlong *)(param_1 + 0x22) != 0) &&
(*(longlong *)(*(longlong *)(param_1 + 0x22) + 8) =
*(longlong *)(*(longlong *)(param_1 + 0x22) + 8) + -1,
*(longlong *)(*(longlong *)(param_1 + 0x22) + 8) == 0)) {
puVar4 = *(undefined8 **)(param_1 + 0x22);
puVar1 = (undefined8 *)*puVar4;
if (puVar1 != (undefined8 *)0x0) {
FUN_1400741a0(puVar1);
operator_delete(puVar1);
}
FUN_14006cc60(puVar4);
}
*(undefined ***)(param_1 + 0x18) = Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
pwVar3 = (wchar_t *)(longlong)param_1[0x1e];
if (0 < param_1[0x1e]) {
FUN_1400f8e50(*(longlong **)(param_1 + 0x1c),(longlong)pwVar3);
param_2 = pwVar3;
}
pwVar3 = *(wchar_t **)(param_1 + 0x1c);
if (pwVar3 != (wchar_t *)0x0) {
param_3 = *(longlong **)(param_1 + 0x1a);
if (param_3 == (longlong *)0x0) {
FUN_14006cc60(pwVar3);
}
else {
(**(code **)(*param_3 + 0x18))(param_3);
param_2 = pwVar3;
}
}
*(undefined ***)(param_1 + 0xe) = Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
pwVar3 = (wchar_t *)(longlong)param_1[0x14];
if (0 < param_1[0x14]) {
FUN_1400f8e50(*(longlong **)(param_1 + 0x12),(longlong)pwVar3);
param_2 = pwVar3;
}
pwVar3 = *(wchar_t **)(param_1 + 0x12);
if (pwVar3 != (wchar_t *)0x0) {
param_3 = *(longlong **)(param_1 + 0x10);
if (param_3 == (longlong *)0x0) {
FUN_14006cc60(pwVar3);
}
else {
(**(code **)(*param_3 + 0x18))(param_3);
param_2 = pwVar3;
}
}
FUN_14006b400(param_1,param_2,param_3,param_4);
return;
}