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,192 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400f5f50 FUN_1400f5f50
* Pseudocode, not original source. */
void FUN_1400f5f50(undefined8 *param_1,longlong *param_2,longlong *param_3,undefined8 param_4)
{
uint uVar1;
undefined8 uVar2;
int iVar3;
undefined8 *puVar4;
longlong *_Dst;
longlong lVar5;
char cVar6;
uint uVar7;
longlong *plVar8;
uint uVar9;
ulonglong uVar10;
ulonglong uVar11;
longlong *plVar12;
double dVar13;
longlong *local_80;
longlong *local_78;
undefined8 local_70;
longlong *local_68;
undefined8 local_60;
undefined4 local_58;
undefined4 local_54;
undefined8 local_50;
undefined8 local_48;
undefined8 local_40;
undefined4 local_38;
cVar6 = (char)param_2;
dVar13 = (double)(**(code **)(**(longlong **)*param_1 + 0x18))
(*(longlong **)*param_1,param_2,param_3,param_4,0xfffffffffffffffe);
if ((((cVar6 != '\0') || (iVar3 = (**(code **)(**(longlong **)*param_1 + 0x20))(), iVar3 == 0)) ||
(DAT_1401ae2b8 < dVar13 - (double)param_1[4])) &&
(param_1[4] = dVar13, 0 < (longlong)param_1[0xd])) {
plVar12 = (longlong *)0x0;
do {
local_60 = (**(code **)(**(longlong **)*param_1 + 0x38))();
local_70 = 0;
local_78 = (longlong *)0x0;
local_80 = (longlong *)0x0;
local_68 = (longlong *)0x0;
local_54 = 0;
local_40 = 0;
local_50 = 0;
local_48 = 0;
local_38 = 0;
uVar1 = *(uint *)(param_1 + 1);
*(uint *)(param_1 + 1) = uVar1 + 1;
uVar9 = DAT_1401ba9d8;
if ((int)(uint)param_1[0xd] <= (int)DAT_1401ba9d8) {
uVar9 = (uint)param_1[0xd];
}
local_80 = (longlong *)FUN_1400d1840((ulonglong)uVar1,param_2,(SIZE_T)param_3);
local_80[5] = 1;
if ((int)uVar9 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
if (local_78 == (longlong *)0x0) {
if ((int)uVar9 < 1) {
if (local_80 == (longlong *)0x0) goto LAB_1400f608b;
param_3 = local_80;
uVar7 = 0;
}
else {
uVar7 = uVar9;
if (local_80 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_1400d1900(0,param_2,param_3,param_4);
}
}
FUN_1400146f0((longlong)local_80,uVar7,(SIZE_T)param_3);
}
else {
if (local_70._4_4_ < (int)uVar9) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
local_70 = CONCAT44(local_70._4_4_,uVar9);
}
LAB_1400f608b:
plVar8 = plVar12;
if (*(int *)(param_1 + 10) != 0) {
plVar8 = (longlong *)param_1[9];
}
plVar8 = (longlong *)((longlong)plVar8 + param_1[0xc]);
_Dst = local_78;
if (local_78 == (longlong *)0x0) {
if (local_80 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_1400d1900(0,plVar8,0,param_4);
}
_Dst = plVar12;
if ((int)local_80[3] != 0) {
_Dst = (longlong *)local_80[2];
}
}
param_2 = (longlong *)(longlong)(int)uVar9;
if (param_2 < (longlong *)0x21) {
uVar10 = (ulonglong)(uVar9 & 7);
for (uVar11 = (ulonglong)param_2 >> 3; uVar11 != 0; uVar11 = uVar11 - 1) {
*_Dst = *plVar8;
_Dst = _Dst + 1;
plVar8 = plVar8 + 1;
}
param_4 = 0;
param_3 = (longlong *)0x0;
if (uVar10 != 0) {
lVar5 = (longlong)_Dst - (longlong)plVar8;
do {
*(char *)(lVar5 + (longlong)plVar8) = (char)*plVar8;
plVar8 = (longlong *)((longlong)plVar8 + 1);
uVar10 = uVar10 - 1;
} while (uVar10 != 0);
param_3 = (longlong *)0x0;
}
}
else {
param_3 = param_2;
memcpy(_Dst,plVar8,(size_t)param_2);
}
uVar2 = param_1[0x10];
plVar8 = (longlong *)param_1[0xe];
if (plVar8 == (longlong *)0x0) {
puVar4 = (undefined8 *)FUN_14006cbf0(0x68);
}
else {
puVar4 = (undefined8 *)(**(code **)(*plVar8 + 8))(plVar8,0x68);
}
if (puVar4 != (undefined8 *)0x0) {
*(undefined4 *)(puVar4 + 2) = 1;
*(uint *)((longlong)puVar4 + 0x14) = uVar1;
puVar4[5] = 0;
puVar4[4] = 0;
if (local_80 == (longlong *)0x0) {
puVar4[3] = 0;
*(int *)((longlong)puVar4 + 0x2c) = local_70._4_4_;
puVar4[4] = local_78;
*(undefined4 *)(puVar4 + 5) = (undefined4)local_70;
}
else {
local_80[5] = local_80[5] + 1;
puVar4[3] = local_80;
}
puVar4[7] = local_60;
plVar8 = plVar12;
if (local_68 != (longlong *)0x0) {
local_68[1] = local_68[1] + 1;
plVar8 = local_68;
}
puVar4[6] = plVar8;
*(undefined4 *)(puVar4 + 8) = local_58;
*(undefined4 *)((longlong)puVar4 + 0x44) = local_54;
puVar4[9] = local_50;
puVar4[10] = local_48;
puVar4[0xb] = local_40;
*(undefined4 *)(puVar4 + 0xc) = local_38;
}
puVar4[1] = uVar2;
*puVar4 = 0;
param_1[0x11] = param_1[0x11] + 1;
if ((undefined8 *)param_1[0x10] == (undefined8 *)0x0) {
param_1[0xf] = puVar4;
}
else {
*(undefined8 *)param_1[0x10] = puVar4;
}
param_1[0x10] = puVar4;
FUN_1400f88b0(param_1 + 6,(longlong)param_2,param_3,param_4);
if (local_68 != (longlong *)0x0) {
plVar8 = local_68 + 1;
*plVar8 = *plVar8 + -1;
if (*plVar8 == 0) {
param_2 = local_68;
FUN_140080140((longlong)&local_68,local_68);
}
}
FUN_1400d1800((longlong *)&local_80);
if ((local_78 != (longlong *)0x0) && (local_70 < 0)) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
} while (0 < (longlong)param_1[0xd]);
}
return;
}