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,307 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400ca320 FUN_1400ca320
* Pseudocode, not original source. */
void FUN_1400ca320(IMAGE_DOS_HEADER *param_1,undefined8 param_2,IMAGE_DOS_HEADER *param_3,
IMAGE_DOS_HEADER *param_4)
{
int *piVar1;
byte bVar2;
uint uVar3;
short *psVar4;
bool bVar5;
HANDLE hThread;
undefined8 uVar6;
IMAGE_DOS_HEADER *pIVar7;
IMAGE_DOS_HEADER *pIVar8;
int *piVar9;
longlong lVar10;
IMAGE_DOS_HEADER *pIVar11;
IMAGE_DOS_HEADER *pIVar12;
int iVar13;
undefined4 *puVar15;
ulonglong uVar16;
short *psVar17;
ulonglong uVar18;
double dVar19;
char local_res10 [8];
longlong *local_res18;
short *local_res20;
undefined **local_108;
IMAGE_DOS_HEADER *local_100;
IMAGE_DOS_HEADER *local_f8;
undefined8 local_f0;
undefined8 local_e8;
undefined **local_e0;
longlong *local_d8;
LPVOID local_d0;
undefined8 local_c8;
word local_c0 [4];
undefined **local_b8;
longlong *local_b0;
LPVOID local_a8;
byte local_a0 [16];
IMAGE_DOS_HEADER *local_90;
undefined8 local_88;
uint local_80;
byte local_78 [8];
word local_70 [4];
undefined **local_68;
word local_60 [2];
word local_5c;
int *local_58;
byte local_50;
byte local_48 [16];
ulonglong uVar14;
local_48[0] = 0xfe;
local_48[1] = 0xff;
local_48[2] = 0xff;
local_48[3] = 0xff;
local_48[4] = 0xff;
local_48[5] = 0xff;
local_48[6] = 0xff;
local_48[7] = 0xff;
hThread = GetCurrentThread();
pIVar12 = (IMAGE_DOS_HEADER *)0x0;
SetThreadPriorityBoost(hThread,0);
pIVar11 = (IMAGE_DOS_HEADER *)local_res10;
FUN_1400f8570(pIVar11);
local_b8 = Proud::CFastArray<Proud::ISendIssueObject*___ptr64,0>::vftable;
uVar16 = 0;
local_b0 = (longlong *)0x0;
local_a8 = (LPVOID)0x0;
local_a0[0] = 0;
local_a0[1] = 0;
local_a0[2] = 0;
local_a0[3] = 0;
local_a0[4] = 0;
local_a0[5] = 0;
local_a0[6] = 0;
local_a0[7] = 0;
local_a0[8] = 0;
local_a0[9] = 0;
local_a0[10] = 0;
local_a0[0xb] = 0;
local_a0[0xc] = 0;
local_a0[0xd] = 0;
local_a0[0xe] = 0;
local_a0[0xf] = 0;
local_d8 = (longlong *)0x0;
local_d0 = (LPVOID)0x0;
local_c8._0_2_ = 0;
local_c8._2_2_ = 0;
local_c8._4_2_ = 0;
local_c8._6_2_ = 0;
local_e0 = Proud::CReceivedMessageList::vftable;
local_c0[0] = 1000;
local_c0[1] = 0;
local_c0[2] = 1;
local_c0[3] = 0;
bVar5 = FUN_14006c410(pIVar11,pIVar12,param_3,param_4);
if (bVar5) {
local_108 = Proud::CFastArray<Proud::CompletionStatus,0>::vftable;
local_100 = (IMAGE_DOS_HEADER *)0x0;
local_f8 = (IMAGE_DOS_HEADER *)0x0;
local_f0 = 0;
local_e8 = 0;
pIVar12 = (IMAGE_DOS_HEADER *)0xa;
FUN_1400c2510((longlong)&local_108,10,param_3,param_4);
local_res18 = (longlong *)((ulonglong)local_res18 & 0xffffffff00000000);
while (param_1[2].e_program[0] == 0) {
param_4 = (IMAGE_DOS_HEADER *)(ulonglong)DAT_1401ac068;
param_3 = (IMAGE_DOS_HEADER *)&local_res18;
uVar6 = FUN_140075840(*(char **)(*(longlong *)(param_1[2].e_program + 8) + 0x788),
(longlong *)&local_108,(uint *)param_3,param_4);
pIVar12 = *(IMAGE_DOS_HEADER **)(*(longlong *)(param_1[2].e_program + 8) + 0x118);
dVar19 = (double)(**(code **)&pIVar12->e_cparhdr)();
pIVar11 = *(IMAGE_DOS_HEADER **)(param_1[2].e_program + 8);
if (*(double *)(pIVar11[0x10].e_res_4_ + 2) <= dVar19 - *(double *)(param_1 + 2) &&
dVar19 - *(double *)(param_1 + 2) != *(double *)(pIVar11[0x10].e_res_4_ + 2)) {
*(double *)(param_1 + 2) = dVar19;
pIVar12 = (IMAGE_DOS_HEADER *)&local_b8;
pIVar11 = param_1;
FUN_1400c2170((longlong)param_1,(longlong)pIVar12,param_3,(longlong)param_4);
}
if (((char)uVar6 != '\0') && (uVar14 = uVar16, uVar18 = uVar16, (uint)local_res18 != 0)) {
do {
iVar13 = (int)uVar14;
if ((iVar13 < 0) || ((int)local_f0 <= iVar13)) {
/* WARNING: Subroutine does not return */
FUN_14006be30(pIVar11,pIVar12,param_3,param_4);
}
pIVar12 = (IMAGE_DOS_HEADER *)(local_f8->e_magic + (longlong)iVar13 * 0x38);
param_3 = (IMAGE_DOS_HEADER *)&local_e0;
pIVar11 = param_1;
FUN_1400ca250((longlong *)param_1,(undefined8 *)pIVar12,param_3,param_4);
if ((int)local_f0 <= iVar13) {
/* WARNING: Subroutine does not return */
FUN_14006be30(pIVar11,pIVar12,param_3,param_4);
}
pIVar8 = (IMAGE_DOS_HEADER *)(local_f8->e_magic + uVar18);
pIVar11 = *(IMAGE_DOS_HEADER **)pIVar8;
pIVar7 = (IMAGE_DOS_HEADER *)FUN_1400debf0((longlong *)pIVar11);
if (pIVar7 != (IMAGE_DOS_HEADER *)0x0) {
uVar3._0_2_ = pIVar8->e_sp;
uVar3._2_2_ = pIVar8->e_csum;
pIVar11 = (IMAGE_DOS_HEADER *)(ulonglong)uVar3;
if (uVar3 == 2) {
param_4 = (IMAGE_DOS_HEADER *)&local_e0;
pIVar11 = param_1;
FUN_1400c96e0((byte **)param_1,(longlong)pIVar8,pIVar7,param_4);
pIVar12 = pIVar8;
param_3 = pIVar7;
}
else if (uVar3 == 1) {
pIVar11 = param_1;
FUN_1400c1b10((longlong)param_1,(longlong)pIVar8,(longlong)pIVar7,param_4);
pIVar12 = pIVar8;
param_3 = pIVar7;
}
}
uVar14 = (ulonglong)(iVar13 + 1U);
uVar18 = uVar18 + 0x38;
} while (iVar13 + 1U < (uint)local_res18);
}
}
local_108 = Proud::CFastArray<Proud::CompletionStatus,0>::vftable;
pIVar11 = local_f8;
if (local_f8 != (IMAGE_DOS_HEADER *)0x0) {
param_3 = local_100;
if (local_100 == (IMAGE_DOS_HEADER *)0x0) {
FUN_14006cc60(local_f8);
}
else {
pIVar11 = local_100;
pIVar12 = local_f8;
(**(code **)(*(longlong *)local_100 + 0x18))();
}
}
}
else {
bVar2 = param_1[2].e_program[0];
while (bVar2 == 0) {
local_68 = Proud::AddrPort::vftable;
local_90 = (IMAGE_DOS_HEADER *)0x0;
local_78[0] = 0;
local_78[1] = 0;
local_78[2] = 0;
local_78[3] = 0;
local_78[4] = 0;
local_78[5] = 0;
local_78[6] = 0;
local_78[7] = 0;
local_88._0_2_ = 0;
local_88._2_2_ = 0;
local_88._4_2_ = 0;
local_88._6_2_ = 0;
local_80 = 5;
local_70[0] = 0;
local_70[1] = 0;
param_3 = (IMAGE_DOS_HEADER *)(ulonglong)DAT_1401ac068;
local_60 = (word [2])DAT_1401ac3d0;
local_5c = DAT_1401ac3d4;
uVar6 = FUN_1400753f0(*(char **)(*(longlong *)(param_1[2].e_program + 8) + 0x788),
(longlong *)&local_90,(ulonglong)param_3,param_4);
pIVar12 = *(IMAGE_DOS_HEADER **)(*(longlong *)(param_1[2].e_program + 8) + 0x118);
dVar19 = (double)(**(code **)&pIVar12->e_cparhdr)();
pIVar11 = *(IMAGE_DOS_HEADER **)(param_1[2].e_program + 8);
if (*(double *)(pIVar11[0x10].e_res_4_ + 2) <= dVar19 - *(double *)(param_1 + 2) &&
dVar19 - *(double *)(param_1 + 2) != *(double *)(pIVar11[0x10].e_res_4_ + 2)) {
*(double *)(param_1 + 2) = dVar19;
pIVar12 = (IMAGE_DOS_HEADER *)&local_b8;
pIVar11 = param_1;
FUN_1400c2170((longlong)param_1,(longlong)pIVar12,param_3,(longlong)param_4);
}
if ((char)uVar6 != '\0') {
param_3 = (IMAGE_DOS_HEADER *)&local_e0;
pIVar12 = (IMAGE_DOS_HEADER *)&local_90;
FUN_1400ca250((longlong *)param_1,(undefined8 *)pIVar12,param_3,param_4);
pIVar11 = local_90;
pIVar8 = (IMAGE_DOS_HEADER *)FUN_1400debf0((longlong *)local_90);
if (pIVar8 != (IMAGE_DOS_HEADER *)0x0) {
pIVar11 = (IMAGE_DOS_HEADER *)(ulonglong)local_80;
if (local_80 == 2) {
param_4 = (IMAGE_DOS_HEADER *)&local_e0;
pIVar12 = (IMAGE_DOS_HEADER *)&local_90;
pIVar11 = param_1;
FUN_1400c96e0((byte **)param_1,(longlong)pIVar12,pIVar8,param_4);
param_3 = pIVar8;
}
else if (local_80 == 1) {
pIVar12 = (IMAGE_DOS_HEADER *)&local_90;
pIVar11 = param_1;
FUN_1400c1b10((longlong)param_1,(longlong)pIVar12,(longlong)pIVar8,param_4);
param_3 = pIVar8;
}
}
}
bVar2 = param_1[2].e_program[0];
}
}
if (*(longlong *)(*(longlong *)(param_1[2].e_program + 8) + 0x17f0) != 0) {
FUN_14006cb70(pIVar11,pIVar12,param_3,param_4);
local_res20 = (short *)PTR_DAT_1401ac010;
FUN_140053d20((longlong *)&local_res20,L"%s thread 종료.",
L"Proud::CNetThreads_S::NetWorkerThread_Main",param_4);
psVar4 = local_res20;
psVar17 = local_res20;
if (local_res20 == (short *)0x0) {
psVar17 = (short *)PTR_DAT_1401ac010;
}
uVar6 = 0;
lVar10 = *(longlong *)(*(longlong *)(param_1[2].e_program + 8) + 0x17f0);
FUN_1400cb700(lVar10,0,psVar17,param_4);
if (((psVar4 != (short *)0x0) && (psVar4 != (short *)PTR_DAT_1401ac010)) &&
(psVar4 + -4 != (short *)0x0)) {
piVar9 = (int *)FUN_14006cb70(lVar10,uVar6,psVar17,param_4);
local_58 = piVar9;
FUN_14006b350(piVar9);
local_50 = 1;
piVar1 = (int *)(psVar4 + -2);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14006cc60(psVar4 + -4);
}
FUN_14006b3e0((longlong)piVar9);
}
}
local_e0 = Proud::CFastArray<Proud::CReceivedMessage,0>::vftable;
lVar10 = (longlong)(int)local_c8;
if (0 < (int)local_c8) {
puVar15 = (undefined4 *)((longlong)local_d0 + 0x18);
do {
local_res18 = (longlong *)(puVar15 + -4);
FUN_1400d1800(local_res18);
if (*(longlong *)(puVar15 + -2) != 0) {
if ((int)puVar15[1] < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
*puVar15 = 0;
}
uVar16 = uVar16 + 1;
puVar15 = puVar15 + 0x12;
} while ((longlong)uVar16 < lVar10);
}
if (local_d0 != (LPVOID)0x0) {
if (local_d8 == (longlong *)0x0) {
FUN_14006cc60(local_d0);
}
else {
(**(code **)(*local_d8 + 0x18))(local_d8,local_d0);
}
}
if (local_a8 != (LPVOID)0x0) {
if (local_b0 == (longlong *)0x0) {
FUN_14006cc60(local_a8);
}
else {
(**(code **)(*local_b0 + 0x18))(local_b0,local_a8);
}
}
FUN_1400f85a0(local_res10);
return;
}