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,116 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401c2b40 FUN_1401c2b40
* Pseudocode, not original source. */
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401c2b40(int *param_1,longlong param_2,undefined8 param_3)
{
longlong lVar1;
int iVar2;
longlong lVar3;
undefined1 auStack_1a08 [32];
undefined1 local_19e8 [72];
undefined8 local_19a0;
undefined1 local_1998 [80];
undefined1 local_1948 [3200];
longlong local_cc8;
undefined4 local_cc0;
int local_cbc;
undefined1 local_cb8 [3200];
longlong local_38;
int local_2c;
ulonglong local_28;
undefined8 uStack_20;
uStack_20 = 0x1401c2b4e;
local_19a0 = 0xfffffffffffffffe;
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_1a08;
if (*(longlong *)(param_2 + 0xc80) == 0) {
FUN_14016d300(local_19e8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_19e8,(ThrowInfo *)&DAT_1403417f8);
}
if (*(int *)(param_2 + 0xc8c) < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
lVar3 = 0;
*(undefined4 *)(param_2 + 0xc88) = 0;
FUN_14004eef0(param_3,0x13);
FUN_14004eef0(param_3,(char)*param_1);
if (*param_1 == 1) {
FUN_140153c40(param_3,param_1[1]);
if (*(longlong *)(param_1 + 2) == 0) {
if (*(longlong *)(param_1 + 4) == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
iVar2 = param_1[6];
}
else {
iVar2 = *(int *)(*(longlong *)(param_1 + 2) + 0x18);
}
FUN_14016cac0(param_3,(longlong)iVar2);
FUN_14016e080(local_1948,param_3);
FUN_14016ded0(param_2,local_1948);
if (local_cc8 == 0) {
FUN_14016d300(local_19e8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_19e8,(ThrowInfo *)&DAT_1403417f8);
}
if (local_cbc < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
local_cc0 = 0;
lVar1 = *(longlong *)(param_1 + 2);
if ((lVar1 == 0) && (*(longlong *)(param_1 + 4) == 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
if (*(longlong *)(param_1 + 4) == 0) {
if (lVar1 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
if (*(int *)(lVar1 + 0x18) != 0) {
lVar3 = *(longlong *)(lVar1 + 0x10);
}
}
else {
lVar3 = *(longlong *)(param_1 + 4);
if (lVar3 == 0) {
FUN_14016d300(local_1998,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_1998,(ThrowInfo *)&DAT_1403417f8);
}
}
FUN_14016de40(param_2,lVar3);
}
else if (*param_1 == 2) {
if ((*(longlong **)(param_1 + 8) == (longlong *)0x0) ||
(lVar3 = **(longlong **)(param_1 + 8), lVar3 == 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
FUN_1401c3450(lVar3,param_3);
FUN_140153c40(param_3,param_1[0xd]);
FUN_140153c40(param_3,param_1[0xc]);
FUN_14016e080(local_cb8,param_3);
FUN_14016ded0(param_2,local_cb8);
if (local_38 == 0) {
FUN_14016d300(local_19e8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_19e8,(ThrowInfo *)&DAT_1403417f8);
}
if (local_2c < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
}
return;
}