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,101 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x140093f40 FUN_140093f40
* Pseudocode, not original source. */
undefined4
FUN_140093f40(longlong param_1,uint param_2,TypeDescriptor *param_3,TypeDescriptor *param_4)
{
uint uVar1;
uint uVar2;
undefined4 uVar3;
LPVOID pvVar4;
int *piVar5;
longlong *plVar6;
longlong *plVar7;
undefined8 **ppuVar8;
uint *puVar9;
longlong lVar10;
uint uVar11;
ulonglong uVar12;
TypeDescriptor *pTVar13;
longlong lVar14;
int iVar15;
uint *puVar16;
undefined8 *local_res8;
plVar7 = (longlong *)(param_1 + -0xa8);
pTVar13 = param_4;
piVar5 = (int *)(**(code **)(*plVar7 + 0x58))(plVar7);
FUN_14006b350(piVar5);
if (DAT_1401b42cf != '\0') {
(**(code **)(*plVar7 + 200))(plVar7,L"Proud::CNetServerImpl::GetMostSuitableSuperPeerInGroup");
}
uVar12 = (ulonglong)param_2;
ppuVar8 = &local_res8;
plVar6 = FUN_140093630((longlong)plVar7,(longlong *)ppuVar8,param_2);
if ((undefined8 *)*plVar6 == (undefined8 *)0x0) {
puVar16 = (uint *)0x0;
}
else {
puVar16 = *(uint **)*plVar6;
}
if ((local_res8 != (undefined8 *)0x0) && (local_res8[1] = local_res8[1] + -1, local_res8[1] == 0))
{
pvVar4 = (LPVOID)*local_res8;
if (pvVar4 != (LPVOID)0x0) {
FUN_1400807c0((longlong)pvVar4,ppuVar8,uVar12,pTVar13);
FUN_14006cc60(pvVar4);
}
FUN_14006cc60(local_res8);
}
if (puVar16 != (uint *)0x0) {
puVar9 = puVar16;
FUN_140088f60((longlong)plVar7,puVar16,param_3,pTVar13);
iVar15 = 0;
uVar1 = puVar16[0x1e];
lVar10 = 0;
if (0 < (int)uVar1) {
lVar14 = 0;
do {
if ((lVar10 < 0) || ((int)uVar1 <= iVar15)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(plVar7,puVar9,param_3,pTVar13);
}
param_3 = (TypeDescriptor *)0x0;
puVar9 = (uint *)0x0;
uVar2 = *(uint *)&param_4[1].spare;
pTVar13 = (TypeDescriptor *)(ulonglong)uVar2;
if ((int)uVar2 < 1) {
LAB_14009409b:
if ((-1 < iVar15) && (iVar15 < (int)uVar1)) {
uVar3 = *(undefined4 *)((longlong)iVar15 * 0x40 + *(longlong *)(puVar16 + 0x1c));
FUN_14006b3e0((longlong)piVar5);
return uVar3;
}
/* WARNING: Subroutine does not return */
FUN_14006be30(plVar7,puVar9,param_3,pTVar13);
}
while( true ) {
if (((longlong)puVar9 < 0) || ((int)uVar2 <= (int)param_3)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(plVar7,puVar9,param_3,pTVar13);
}
plVar7 = param_4[1].pVFTable;
if (*(int *)((longlong)plVar7 + (longlong)puVar9 * 4) ==
*(int *)(lVar14 + *(longlong *)(puVar16 + 0x1c))) break;
uVar11 = (int)param_3 + 1;
param_3 = (TypeDescriptor *)(ulonglong)uVar11;
puVar9 = (uint *)((longlong)puVar9 + 1);
if ((int)uVar2 <= (int)uVar11) goto LAB_14009409b;
}
iVar15 = iVar15 + 1;
lVar10 = lVar10 + 1;
lVar14 = lVar14 + 0x40;
} while (iVar15 < (int)uVar1);
}
}
FUN_14006b3e0((longlong)piVar5);
return 0;
}