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,157 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401b0f70 FUN_1401b0f70
* Pseudocode, not original source. */
undefined8 FUN_1401b0f70(longlong param_1,undefined8 param_2,longlong param_3,int param_4)
{
byte bVar1;
int iVar2;
undefined7 uVar6;
longlong lVar3;
byte *pbVar4;
void *_Dst;
undefined8 uVar5;
byte *pbVar7;
int iVar8;
undefined **local_258;
undefined8 local_250;
byte *local_248;
undefined8 local_240;
undefined8 local_238;
undefined8 local_230;
longlong local_228;
ulonglong local_220;
undefined8 local_210;
undefined1 local_178 [144];
undefined1 local_e8 [72];
undefined1 local_a0 [72];
undefined1 local_58 [80];
local_210 = 0xfffffffffffffffe;
if (*(int *)(param_3 + 0x3c0) < 1) {
FUN_14016d2a0(local_a0,&DAT_140287690);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_a0,(ThrowInfo *)&DAT_1403417f8);
}
lVar3 = *(longlong *)(param_1 + 8);
if (lVar3 == 0) {
if (*(longlong *)(param_1 + 0x10) == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
iVar8 = *(int *)(param_1 + 0x18);
}
else {
iVar8 = *(int *)(lVar3 + 0x18);
}
if (iVar8 <= param_4) {
if (lVar3 == 0) {
if (*(longlong *)(param_1 + 0x10) == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
param_4 = *(int *)(param_1 + 0x18);
}
else {
param_4 = *(int *)(lVar3 + 0x18);
}
}
if (lVar3 == 0) {
if (*(longlong *)(param_1 + 0x10) == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
iVar8 = *(int *)(param_1 + 0x18);
}
else {
iVar8 = *(int *)(lVar3 + 0x18);
}
iVar8 = iVar8 - param_4;
if (iVar8 == 0) {
uVar6 = (undefined7)((ulonglong)lVar3 >> 8);
}
else {
if (*(longlong *)(param_1 + 0x10) == 0) {
if (lVar3 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
if (*(int *)(lVar3 + 0x18) == 0) {
lVar3 = 0;
}
else {
lVar3 = *(longlong *)(lVar3 + 0x10);
}
}
else {
lVar3 = *(longlong *)(param_1 + 0x10);
if (lVar3 == 0) {
FUN_14016d300(local_178,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_178,(ThrowInfo *)&DAT_1403417f8);
}
}
pbVar7 = (byte *)0x0;
local_250 = 0;
local_248 = (byte *)0x0;
local_240 = 0;
local_238 = 0;
local_258 = Proud::ByteArray::vftable;
FUN_14004f0e0(&local_258,iVar8);
pbVar4 = local_248;
if ((int)local_240 == 0) {
pbVar4 = pbVar7;
}
FUN_1401b0b00(param_3,param_4 + lVar3,pbVar4,iVar8,0);
if ((int)local_240 < 1) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
bVar1 = *local_248;
if ((int)local_240 < (int)(bVar1 + 5)) {
FUN_14016d2a0(local_e8,&DAT_140287660);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_e8,(ThrowInfo *)&DAT_1403417f8);
}
pbVar4 = local_248;
if ((int)local_240 == 0) {
pbVar4 = pbVar7;
}
iVar8 = *(int *)(pbVar4 + 1);
local_220 = 0;
local_228 = 0;
local_230 = 0;
pbVar4 = local_248;
if ((int)local_240 == 0) {
pbVar4 = pbVar7;
}
iVar2 = FUN_1401c5de0(pbVar4 + 5,((int)local_240 - (uint)bVar1) + -5);
if (iVar8 != iVar2) {
FUN_14016d2a0(local_58,&DAT_140287628);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_58,(ThrowInfo *)&DAT_1403417f8);
}
FUN_14016abe0(param_2);
FUN_14016b5a0(param_2,((int)local_240 - (uint)bVar1) + -5);
iVar8 = (int)local_240;
pbVar4 = local_248;
if ((int)local_240 == 0) {
pbVar4 = pbVar7;
}
_Dst = (void *)FUN_14016b000(param_2);
memcpy(_Dst,pbVar4 + 5,(longlong)(int)((iVar8 - (uint)bVar1) + -5));
FUN_14016d0e0(&local_230);
if (local_228 != 0) {
if ((longlong)local_220 < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
local_220 = local_220 & 0xffffffff00000000;
}
uVar5 = FUN_14019a9e0(&local_258);
uVar6 = (undefined7)((ulonglong)uVar5 >> 8);
}
return CONCAT71(uVar6,1);
}