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,159 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14000e4b0 FUN_14000e4b0
* Pseudocode, not original source. */
undefined8 * FUN_14000e4b0(longlong *param_1,byte *param_2,int param_3)
{
char cVar1;
byte bVar2;
int iVar3;
byte *pbVar4;
longlong lVar5;
undefined8 uVar6;
undefined8 *puVar7;
byte *pbVar8;
undefined8 *puVar9;
char *pcVar10;
ulonglong uVar11;
pbVar4 = FUN_14000da10(param_2,param_3);
if (((pbVar4 == (byte *)0x0) || (*pbVar4 == 0)) || (*pbVar4 != 0x3c)) {
return (undefined8 *)0x0;
}
lVar5 = FUN_14000b190(param_1);
pbVar4 = FUN_14000da10(pbVar4,param_3);
if (pbVar4 == (byte *)0x0) {
return (undefined8 *)0x0;
}
if (*pbVar4 == 0) {
return (undefined8 *)0x0;
}
uVar6 = FUN_14000dda0((char *)pbVar4,"<?xml",'\x01',param_3);
if ((char)uVar6 == '\0') {
pbVar8 = &DAT_14015c020;
bVar2 = *pbVar4;
if (bVar2 != 0) {
do {
if (*pbVar8 == 0) goto LAB_14000e5db;
} while (((pbVar4 + -0x14015c020)[(longlong)pbVar8] == *pbVar8) &&
(pbVar8 = pbVar8 + 1, (pbVar4 + -0x14015c020)[(longlong)pbVar8] != 0));
if (*pbVar8 == 0) {
LAB_14000e5db:
puVar7 = operator_new(0x58);
if (puVar7 != (undefined8 *)0x0) {
puVar7[1] = 0xffffffffffffffff;
puVar7[2] = 0;
puVar7[7] = &DAT_1401bcf30;
puVar7[3] = 0;
*(undefined4 *)(puVar7 + 4) = 2;
puVar7[5] = 0;
puVar7[6] = 0;
puVar7[9] = 0;
puVar7[10] = 0;
*puVar7 = TiXmlComment::vftable;
goto LAB_14000e755;
}
goto LAB_14000e70d;
}
}
pbVar8 = &DAT_14015c010;
if (bVar2 != 0) {
do {
if (*pbVar8 == 0) goto LAB_14000e661;
} while (((pbVar4 + -0x14015c010)[(longlong)pbVar8] == *pbVar8) &&
(pbVar8 = pbVar8 + 1, (pbVar4 + -0x14015c010)[(longlong)pbVar8] != 0));
if (*pbVar8 == 0) {
LAB_14000e661:
puVar9 = operator_new(0x60);
puVar7 = (undefined8 *)0x0;
if (puVar9 != (undefined8 *)0x0) {
puVar7 = FUN_14000b340(puVar9);
}
*(undefined1 *)(puVar7 + 0xb) = 1;
goto LAB_14000e755;
}
}
pcVar10 = "<!";
if (bVar2 == 0) {
LAB_14000e713:
if (((0x7e < pbVar4[1]) || (iVar3 = isalpha((uint)pbVar4[1]), iVar3 != 0)) ||
(pbVar4[1] == 0x5f)) {
puVar9 = operator_new(0xa8);
puVar7 = (undefined8 *)0x0;
if (puVar9 != (undefined8 *)0x0) {
puVar7 = FUN_14000bab0(puVar9,&DAT_14015bf08);
}
goto LAB_14000e755;
}
}
else {
do {
if (*pcVar10 == '\0') goto LAB_14000e6ba;
} while ((pcVar10[(longlong)(pbVar4 + -0x14015c420)] == *pcVar10) &&
(pcVar10 = pcVar10 + 1, pcVar10[(longlong)(pbVar4 + -0x14015c420)] != '\0'));
if (*pcVar10 != '\0') goto LAB_14000e713;
}
LAB_14000e6ba:
puVar7 = operator_new(0x58);
if (puVar7 != (undefined8 *)0x0) {
puVar7[1] = 0xffffffffffffffff;
puVar7[2] = 0;
puVar7[7] = &DAT_1401bcf30;
puVar7[3] = 0;
*(undefined4 *)(puVar7 + 4) = 3;
puVar7[5] = 0;
puVar7[6] = 0;
puVar7[9] = 0;
puVar7[10] = 0;
*puVar7 = TiXmlUnknown::vftable;
goto LAB_14000e755;
}
}
else {
puVar7 = operator_new(0x88);
if (puVar7 != (undefined8 *)0x0) {
puVar7[1] = 0xffffffffffffffff;
puVar7[2] = 0;
puVar7[7] = &DAT_1401bcf30;
puVar7[3] = 0;
*(undefined4 *)(puVar7 + 4) = 5;
puVar7[5] = 0;
puVar7[6] = 0;
puVar7[9] = 0;
puVar7[10] = 0;
*puVar7 = TiXmlDeclaration::vftable;
puVar7[0xb] = &DAT_1401bcf30;
puVar7[0xd] = &DAT_1401bcf30;
puVar7[0xf] = &DAT_1401bcf30;
goto LAB_14000e755;
}
}
LAB_14000e70d:
puVar7 = (undefined8 *)0x0;
LAB_14000e755:
if (puVar7 != (undefined8 *)0x0) {
puVar7[3] = param_1;
return puVar7;
}
if (lVar5 == 0) {
return (undefined8 *)0x0;
}
if (*(char *)(lVar5 + 0x58) != '\0') {
return (undefined8 *)0x0;
}
*(undefined1 *)(lVar5 + 0x58) = 1;
*(undefined4 *)(lVar5 + 0x5c) = 3;
uVar11 = 0xffffffffffffffff;
pcVar10 = PTR_s_Memory_allocation_failed__1401b3378;
do {
if (uVar11 == 0) break;
uVar11 = uVar11 - 1;
cVar1 = *pcVar10;
pcVar10 = pcVar10 + 1;
} while (cVar1 != '\0');
FUN_14000af60((longlong *)(lVar5 + 0x60),PTR_s_Memory_allocation_failed__1401b3378,~uVar11 - 1);
*(undefined8 *)(lVar5 + 0x74) = 0xffffffffffffffff;
return (undefined8 *)0x0;
}