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,88 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401e5d90 FUN_1401e5d90
* Pseudocode, not original source. */
uint FUN_1401e5d90(longlong param_1,uint param_2)
{
char *pcVar1;
char *pcVar2;
ushort uVar3;
uint uVar4;
longlong lVar5;
char *pcVar6;
uint uVar7;
uint uVar8;
char *pcVar9;
char *pcVar10;
int iVar11;
uint uVar12;
ulonglong uVar13;
ulonglong uVar14;
char cVar15;
char cVar16;
uint uVar17;
uVar8 = *(uint *)(param_1 + 0x94);
uVar7 = *(uint *)(param_1 + 0xa4);
lVar5 = *(longlong *)(param_1 + 0x50);
uVar13 = (ulonglong)(int)*(uint *)(param_1 + 0xa0);
uVar14 = (ulonglong)param_2;
pcVar2 = (char *)((ulonglong)uVar8 + lVar5);
if (*(int *)(param_1 + 0x44) - 0x106U < uVar8) {
uVar8 = (uVar8 - *(int *)(param_1 + 0x44)) + 0x106;
}
else {
uVar8 = 0;
}
cVar15 = pcVar2[uVar13 - 1];
cVar16 = pcVar2[uVar13];
if (*(uint *)(param_1 + 0xb4) <= *(uint *)(param_1 + 0xa0)) {
uVar7 = uVar7 >> 2;
}
uVar4 = *(uint *)(param_1 + 0x9c);
uVar17 = *(uint *)(param_1 + 0xb8);
if (uVar4 < *(uint *)(param_1 + 0xb8)) {
uVar17 = uVar4;
}
do {
iVar11 = (int)uVar13;
pcVar6 = (char *)(lVar5 + uVar14);
if ((((pcVar6[iVar11] == cVar16) && (pcVar6[(longlong)iVar11 + -1] == cVar15)) &&
(*pcVar6 == *pcVar2)) && (pcVar6[1] == pcVar2[1])) {
pcVar6 = pcVar6 + 2;
pcVar9 = pcVar2 + 2;
while (((((pcVar10 = pcVar9 + 1, *pcVar10 == pcVar6[1] &&
(pcVar10 = pcVar9 + 2, *pcVar10 == pcVar6[2])) &&
((pcVar10 = pcVar9 + 3, *pcVar10 == pcVar6[3] &&
((pcVar10 = pcVar9 + 4, *pcVar10 == pcVar6[4] &&
(pcVar10 = pcVar9 + 5, *pcVar10 == pcVar6[5])))))) &&
(pcVar10 = pcVar9 + 6, *pcVar10 == pcVar6[6])) &&
(pcVar10 = pcVar9 + 7, *pcVar10 == pcVar6[7]))) {
pcVar1 = pcVar6 + 8;
pcVar6 = pcVar6 + 8;
pcVar10 = pcVar9 + 8;
if ((*pcVar10 != *pcVar1) || (pcVar9 = pcVar10, pcVar2 + 0x102 <= pcVar10)) break;
}
uVar12 = ((int)pcVar10 - (int)(pcVar2 + 0x102)) + 0x102;
if (iVar11 < (int)uVar12) {
*(int *)(param_1 + 0x98) = (int)uVar14;
uVar13 = (ulonglong)uVar12;
if ((int)uVar17 <= (int)uVar12) break;
cVar15 = pcVar2[(longlong)(int)uVar12 + -1];
cVar16 = pcVar2[(int)uVar12];
}
}
uVar12 = (uint)uVar13;
uVar3 = *(ushort *)(*(longlong *)(param_1 + 0x60) + (*(uint *)(param_1 + 0x4c) & uVar14) * 2);
uVar14 = (ulonglong)uVar3;
if (uVar3 <= uVar8) break;
uVar7 = uVar7 - 1;
lVar5 = *(longlong *)(param_1 + 0x50);
} while (uVar7 != 0);
if (uVar12 <= uVar4) {
uVar4 = uVar12;
}
return uVar4;
}