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,218 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14018cac0 FUN_14018cac0
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x00014018ce93) */
/* WARNING: Removing unreachable block (ram,0x00014018ceaf) */
void FUN_14018cac0(longlong param_1,longlong param_2)
{
ulonglong *puVar1;
longlong *plVar2;
void *pvVar3;
ulonglong uVar4;
ulonglong uVar5;
longlong lVar6;
ulonglong uVar7;
longlong lVar8;
ulonglong *local_res8;
longlong *local_res18;
undefined8 uVar9;
uVar9 = 0xfffffffffffffffe;
if (*(longlong *)(param_1 + 0x20) == 0) {
lVar8 = 0;
}
else {
lVar8 = *(longlong *)(param_1 + 0x10);
}
while (lVar8 != 0) {
if (lVar8 == 0) {
/* WARNING: Subroutine does not return */
FUN_14004dc60(0x80004005);
}
local_res8 = (ulonglong *)0x0;
if (*(longlong *)(lVar8 + 8) != 0) {
*(longlong *)(*(longlong *)(lVar8 + 8) + 8) = *(longlong *)(*(longlong *)(lVar8 + 8) + 8) + 1;
local_res8 = *(ulonglong **)(lVar8 + 8);
}
if (local_res8 == (ulonglong *)0x0) {
uVar4 = 0;
}
else {
uVar4 = *local_res8;
}
if (*(longlong *)(uVar4 + 0x100) == param_2) {
LAB_14018cb81:
if (local_res8 == (ulonglong *)0x0) {
uVar4 = 0;
}
else {
uVar4 = *local_res8;
}
lVar6 = *(longlong *)(uVar4 + 0x100);
if (local_res8 == (ulonglong *)0x0) {
uVar4 = 0;
}
else {
uVar4 = *local_res8;
}
uVar4 = (uVar4 & 0xffffffff) % (ulonglong)*(uint *)(lVar6 + 0x6c8);
if (*(longlong *)(lVar6 + 0x6a8) != 0) {
plVar2 = *(longlong **)(*(longlong *)(lVar6 + 0x6a8) + uVar4 * 8);
while( true ) {
if ((plVar2 == (longlong *)0x0) ||
((uint)uVar4 != *(uint *)(plVar2 + 4) % *(uint *)(lVar6 + 0x6c8))) goto LAB_14018cc1a;
if ((ulonglong *)*plVar2 == (ulonglong *)0x0) {
uVar7 = 0;
}
else {
uVar7 = *(ulonglong *)*plVar2;
}
if (local_res8 == (ulonglong *)0x0) {
uVar5 = 0;
}
else {
uVar5 = *local_res8;
}
if (uVar7 == uVar5) break;
plVar2 = (longlong *)plVar2[2];
}
FUN_1401877c0(lVar6 + 0x6a0,plVar2,0,lVar6,uVar9);
}
LAB_14018cc1a:
if (local_res8 == (ulonglong *)0x0) {
uVar4 = 0;
}
else {
uVar4 = *local_res8;
}
lVar6 = *(longlong *)(uVar4 + 0x108);
if (local_res8 == (ulonglong *)0x0) {
uVar4 = 0;
}
else {
uVar4 = *local_res8;
}
uVar4 = (uVar4 & 0xffffffff) % (ulonglong)*(uint *)(lVar6 + 0x6c8);
if (*(longlong *)(lVar6 + 0x6a8) != 0) {
plVar2 = *(longlong **)(*(longlong *)(lVar6 + 0x6a8) + uVar4 * 8);
while( true ) {
if ((plVar2 == (longlong *)0x0) ||
((uint)uVar4 != *(uint *)(plVar2 + 4) % *(uint *)(lVar6 + 0x6c8))) goto LAB_14018ccaa;
if ((ulonglong *)*plVar2 == (ulonglong *)0x0) {
uVar7 = 0;
}
else {
uVar7 = *(ulonglong *)*plVar2;
}
if (local_res8 == (ulonglong *)0x0) {
uVar5 = 0;
}
else {
uVar5 = *local_res8;
}
if (uVar7 == uVar5) break;
plVar2 = (longlong *)plVar2[2];
}
FUN_1401877c0(lVar6 + 0x6a0,plVar2,0,lVar6,uVar9);
}
LAB_14018ccaa:
if (lVar8 == 0) {
/* WARNING: Subroutine does not return */
FUN_14004dc60(0x80004005);
}
lVar6 = *(longlong *)(lVar8 + 0x10);
FUN_140184ef0(param_1,lVar8,0);
lVar8 = lVar6;
}
else {
if (local_res8 == (ulonglong *)0x0) {
uVar4 = 0;
}
else {
uVar4 = *local_res8;
}
if (*(longlong *)(uVar4 + 0x108) == param_2) goto LAB_14018cb81;
if (lVar8 != 0) {
lVar8 = *(longlong *)(lVar8 + 0x10);
}
}
if (local_res8 != (ulonglong *)0x0) {
puVar1 = local_res8 + 1;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
pvVar3 = (void *)*local_res8;
if (pvVar3 != (void *)0x0) {
FUN_14019a9e0((longlong)pvVar3 + 0x148);
FUN_14019a9e0((longlong)pvVar3 + 0x120);
operator_delete(pvVar3);
}
FUN_14016d970(local_res8);
}
}
}
if (*(longlong *)(param_1 + 0x78) == 0) {
lVar8 = 0;
}
else {
lVar8 = *(longlong *)(param_1 + 0x68);
}
do {
if (lVar8 == 0) {
return;
}
if (lVar8 == 0) {
/* WARNING: Subroutine does not return */
FUN_14004dc60(0x80004005);
}
local_res18 = (longlong *)0x0;
if (*(longlong *)(lVar8 + 8) != 0) {
*(longlong *)(*(longlong *)(lVar8 + 8) + 8) = *(longlong *)(*(longlong *)(lVar8 + 8) + 8) + 1;
local_res18 = *(longlong **)(lVar8 + 8);
}
if (local_res18 == (longlong *)0x0) {
lVar6 = 0;
}
else {
lVar6 = *local_res18;
}
if (*(longlong *)(lVar6 + 0x100) == param_2) {
code_r0x00014018cdf6:
if (lVar8 == 0) {
/* WARNING: Subroutine does not return */
FUN_14004dc60(0x80004005);
}
lVar6 = *(longlong *)(lVar8 + 0x10);
FUN_140184ef0(param_1 + 0x58,lVar8,0);
lVar8 = lVar6;
}
else {
if (local_res18 == (longlong *)0x0) {
lVar6 = 0;
}
else {
lVar6 = *local_res18;
}
if (*(longlong *)(lVar6 + 0x108) == param_2) goto code_r0x00014018cdf6;
if (lVar8 != 0) {
lVar8 = *(longlong *)(lVar8 + 0x10);
}
}
if (local_res18 != (longlong *)0x0) {
plVar2 = local_res18 + 1;
*plVar2 = *plVar2 + -1;
if (*plVar2 == 0) {
pvVar3 = (void *)*local_res18;
if (pvVar3 != (void *)0x0) {
FUN_14019a9e0((longlong)pvVar3 + 0x148);
FUN_14019a9e0((longlong)pvVar3 + 0x120);
operator_delete(pvVar3);
}
FUN_14016d970(local_res18);
}
}
} while( true );
}