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,101 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14019aeb0 FUN_14019aeb0
* Pseudocode, not original source. */
short * FUN_14019aeb0(longlong *param_1,longlong param_2,ulonglong param_3)
{
undefined1 auVar1 [16];
undefined1 auVar2 [16];
ulonglong uVar3;
ulonglong uVar4;
longlong *plVar5;
short *psVar6;
short *psVar7;
longlong lVar8;
ulonglong uVar9;
longlong *plVar10;
ulonglong uVar11;
undefined1 local_68 [80];
if ((int)param_1[8] != 2) {
FUN_14016f090(L"CFastHeapImpl::Realloc() is called after the allocator is already disposed!");
return (short *)0x0;
}
if (param_3 == 0) {
(**(code **)(*param_1 + 0x18))();
return (short *)0x0;
}
if ((param_2 == 0) || (psVar6 = (short *)(param_2 + -0x10), *psVar6 != 0x71a)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
uVar9 = (ulonglong)param_1[0xc] >> 7;
uVar11 = ((param_3 - 1) / uVar9 + 1) * uVar9;
if (*(longlong *)(param_2 + -8) == 0) {
LAB_14019af78:
plVar10 = (longlong *)0x0;
}
else {
uVar3 = *(longlong *)(param_2 + -8) - 1;
auVar1._8_8_ = 0;
auVar1._0_8_ = uVar9;
auVar2._8_8_ = 0;
auVar2._0_8_ = uVar3;
uVar4 = SUB168(auVar2 / auVar1,0);
if (0xffffffff < uVar4) {
/* WARNING: Subroutine does not return */
FUN_14016d710(L"Proud::CFastHeapImpl::GetAllocByGroundSize",uVar3 % uVar9);
}
if (0x7f < uVar4) goto LAB_14019af78;
plVar10 = *(longlong **)(param_1[0xd] + (longlong)SUB164(auVar2 / auVar1,0) * 8);
}
plVar5 = (longlong *)FUN_14019ad60(param_1,uVar11);
if (plVar10 == (longlong *)0x0) {
if (plVar5 == (longlong *)0x0) {
psVar6 = (short *)(**(code **)(*(longlong *)param_1[9] + 8))
((longlong *)param_1[9],psVar6,param_3 + 0x10);
*(ulonglong *)(psVar6 + 4) = uVar11;
goto LAB_14019b08d;
}
psVar7 = (short *)(**(code **)(*plVar5 + 8))(plVar5,uVar11 + 0x10);
uVar9 = uVar11;
if (*(ulonglong *)(param_2 + -8) < uVar11) {
uVar9 = *(ulonglong *)(param_2 + -8);
}
FUN_14004f1a0(psVar7,psVar6,uVar9 + 0x10);
*(ulonglong *)(psVar7 + 4) = uVar11;
plVar10 = (longlong *)param_1[9];
lVar8 = *plVar10;
}
else {
if (plVar5 == (longlong *)0x0) {
psVar7 = (short *)(*(code *)**(undefined8 **)param_1[9])
((undefined8 *)param_1[9],param_3 + 0x10);
if (psVar7 == (short *)0x0) {
FUN_14016d300(local_68,L"CRT malloc returned NULL at %s!",L"Proud::CFastHeapImpl::Realloc");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_68,(ThrowInfo *)&DAT_1403417f8);
}
if (*(ulonglong *)(param_2 + -8) < param_3) {
param_3 = *(ulonglong *)(param_2 + -8);
}
}
else {
if (plVar10 == plVar5) goto LAB_14019b08d;
psVar7 = (short *)(**(code **)(*plVar5 + 8))(plVar5,uVar11 + 0x10);
param_3 = uVar11;
if (*(ulonglong *)(param_2 + -8) < uVar11) {
param_3 = *(ulonglong *)(param_2 + -8);
}
}
FUN_14004f1a0(psVar7,psVar6,param_3 + 0x10);
*(ulonglong *)(psVar7 + 4) = uVar11;
lVar8 = *plVar10;
}
(**(code **)(lVar8 + 0x10))(plVar10,psVar6);
psVar6 = psVar7;
LAB_14019b08d:
return psVar6 + 8;
}