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,130 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401e8630 FUN_1401e8630
* Pseudocode, not original source. */
void FUN_1401e8630(longlong param_1,longlong *param_2)
{
short *psVar1;
ushort uVar2;
short sVar3;
int iVar4;
longlong *plVar5;
longlong lVar6;
longlong lVar7;
uint uVar8;
longlong lVar9;
uint uVar10;
longlong lVar11;
ulonglong uVar12;
int iVar13;
int iVar14;
longlong lVar15;
undefined2 *puVar16;
longlong lVar17;
int iVar18;
uint uVar19;
ulonglong uVar20;
int *piVar21;
longlong lVar22;
plVar5 = (longlong *)param_2[2];
lVar6 = *param_2;
lVar7 = param_2[1];
lVar9 = plVar5[2];
uVar19 = *(uint *)(plVar5 + 3);
uVar20 = (ulonglong)(int)uVar19;
lVar15 = *plVar5;
iVar13 = 0;
lVar17 = plVar5[1];
puVar16 = (undefined2 *)(param_1 + 0xb88);
for (lVar11 = 0x10; lVar11 != 0; lVar11 = lVar11 + -1) {
*puVar16 = 0;
puVar16 = puVar16 + 1;
}
*(undefined2 *)
(lVar6 + 2 + (longlong)*(int *)(param_1 + 0xba8 + (longlong)*(int *)(param_1 + 0x14a0) * 4) * 4)
= 0;
iVar14 = *(int *)(param_1 + 0x14a0) + 1;
lVar11 = (longlong)iVar14;
if (lVar11 < 0x23d) {
lVar22 = 0x23d - lVar11;
piVar21 = (int *)(param_1 + 0xba8 + lVar11 * 4);
iVar14 = iVar14 + (int)lVar22;
do {
iVar4 = *piVar21;
lVar11 = (longlong)iVar4 * 4;
uVar10 = *(ushort *)(lVar6 + 2 + (ulonglong)*(ushort *)(lVar11 + 2 + lVar6) * 4) + 1;
if ((int)uVar19 < (int)uVar10) {
iVar13 = iVar13 + 1;
uVar10 = uVar19;
}
*(short *)(lVar11 + 2 + lVar6) = (short)uVar10;
if (iVar4 <= (int)lVar7) {
iVar18 = 0;
psVar1 = (short *)(param_1 + 0xb88 + (longlong)(int)uVar10 * 2);
*psVar1 = *psVar1 + 1;
if ((int)lVar9 <= iVar4) {
iVar18 = *(int *)(lVar17 + ((longlong)iVar4 - (longlong)(int)lVar9) * 4);
}
uVar2 = *(ushort *)(lVar11 + lVar6);
*(int *)(param_1 + 0x1700) = *(int *)(param_1 + 0x1700) + (iVar18 + uVar10) * (uint)uVar2;
if (lVar15 != 0) {
*(int *)(param_1 + 0x1704) =
*(int *)(param_1 + 0x1704) +
((uint)*(ushort *)(lVar11 + 2 + lVar15) + iVar18) * (uint)uVar2;
}
}
piVar21 = piVar21 + 1;
lVar22 = lVar22 + -1;
} while (lVar22 != 0);
}
if (iVar13 != 0) {
do {
uVar12 = (ulonglong)(int)(uVar19 - 1);
sVar3 = *(short *)(param_1 + 0xb88 + uVar12 * 2);
uVar10 = uVar19 - 1;
while (sVar3 == 0) {
uVar10 = (int)uVar12 - 1;
uVar12 = (ulonglong)uVar10;
sVar3 = *(short *)(param_1 + 0xb88 + (longlong)(int)uVar10 * 2);
}
iVar13 = iVar13 + -2;
psVar1 = (short *)(param_1 + 0xb88 + (longlong)(int)uVar10 * 2);
*psVar1 = *psVar1 + -1;
psVar1 = (short *)(param_1 + 0xb8a + (longlong)(int)uVar10 * 2);
*psVar1 = *psVar1 + 2;
psVar1 = (short *)(param_1 + 0xb88 + uVar20 * 2);
*psVar1 = *psVar1 + -1;
} while (0 < iVar13);
lVar15 = (longlong)iVar14;
while (uVar19 != 0) {
uVar19 = (uint)uVar20;
uVar2 = *(ushort *)(param_1 + 0xb88 + (longlong)(int)uVar19 * 2);
uVar10 = (uint)uVar2;
if (uVar2 != 0) {
lVar17 = param_1 + 0xba8 + lVar15 * 4;
do {
piVar21 = (int *)(lVar17 + -4);
lVar9 = (longlong)*piVar21;
lVar17 = lVar17 + -4;
lVar15 = lVar15 + -1;
if (*piVar21 <= (int)lVar7) {
uVar8 = (uint)*(ushort *)(lVar6 + 2 + lVar9 * 4);
if (uVar8 != uVar19) {
*(int *)(param_1 + 0x1700) =
*(int *)(param_1 + 0x1700) +
(uVar19 - uVar8) * (uint)*(ushort *)(lVar6 + lVar9 * 4);
*(short *)(lVar6 + 2 + lVar9 * 4) = (short)uVar20;
}
uVar10 = uVar10 - 1;
}
} while (uVar10 != 0);
}
uVar19 = uVar19 - 1;
uVar20 = (ulonglong)uVar19;
}
}
return;
}