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,241 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401d6d60 FUN_1401d6d60
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001401d716c) */
/* WARNING: Removing unreachable block (ram,0x0001401d717b) */
/* WARNING: Removing unreachable block (ram,0x0001401d7180) */
/* WARNING: Removing unreachable block (ram,0x0001401d71be) */
/* WARNING: Removing unreachable block (ram,0x0001401d7190) */
/* WARNING: Removing unreachable block (ram,0x0001401d71af) */
/* WARNING: Removing unreachable block (ram,0x0001401d71a1) */
/* WARNING: Removing unreachable block (ram,0x0001401d71b7) */
/* WARNING: Removing unreachable block (ram,0x0001401d71bc) */
undefined8 FUN_1401d6d60(undefined8 *param_1,LPCWSTR param_2)
{
int *piVar1;
undefined8 *puVar2;
undefined8 *puVar3;
undefined8 *puVar4;
undefined8 *puVar5;
int iVar6;
DWORD DVar7;
BOOL BVar8;
longlong lVar9;
undefined8 *puVar10;
undefined8 uVar11;
HANDLE hFile;
undefined8 uVar12;
undefined *puVar13;
undefined8 *puVar14;
undefined8 *puVar15;
undefined *puVar16;
undefined *puVar17;
HANDLE pvVar18;
undefined8 *local_res8;
LPCWSTR local_res10;
undefined2 local_res18 [4];
undefined8 *local_res20;
undefined *local_118;
undefined8 *local_110;
undefined8 *local_108;
undefined8 *local_100;
undefined8 *local_f8;
HANDLE local_f0;
undefined8 local_e8;
undefined8 local_e0;
undefined1 local_d8;
undefined8 local_d0;
undefined8 local_c8;
longlong local_c0;
undefined *local_b8;
undefined4 local_b0;
undefined8 local_a8;
undefined8 local_a0;
undefined1 local_98;
undefined8 local_90;
undefined1 local_88;
undefined8 local_80;
undefined8 local_78;
undefined1 local_70;
undefined *local_68 [5];
local_80 = 0xfffffffffffffffe;
local_res8 = param_1;
local_res10 = param_2;
local_e0 = (**(code **)(param_1[-0xe] + 0x58))();
FUN_14016db50(local_e0);
puVar4 = local_res8;
local_d8 = 1;
puVar14 = (undefined8 *)0x0;
local_110 = (undefined8 *)0x0;
local_f8 = (undefined8 *)0x0;
local_108 = (undefined8 *)0x0;
local_100 = (undefined8 *)0x0;
lVar9 = param_1[0x2eb];
puVar2 = puVar14;
puVar3 = puVar14;
puVar10 = local_110;
while (local_110 = puVar10, lVar9 != 0) {
lVar9 = FUN_1401d3d60(param_1 + 0x2e8,local_68);
puVar10 = (undefined8 *)FUN_14016d940(0x28);
local_res8 = puVar10;
local_res20 = puVar10;
if (puVar10 != (undefined8 *)0x0) {
FUN_14016d8c0();
puVar10[2] = PTR_DAT_1403440a0;
FUN_14004e6d0(puVar10 + 2,lVar9);
*(undefined4 *)(puVar10 + 3) = *(undefined4 *)(lVar9 + 8);
puVar10[4] = *(undefined8 *)(lVar9 + 0x10);
}
puVar16 = local_68[0];
puVar10[1] = puVar2;
*puVar10 = 0;
puVar14 = (undefined8 *)((longlong)puVar14 + 1);
puVar15 = puVar10;
puVar5 = puVar10;
if (puVar2 != (undefined8 *)0x0) {
*puVar2 = puVar10;
puVar15 = puVar3;
puVar5 = local_108;
}
local_108 = puVar5;
local_100 = puVar10;
local_f8 = puVar14;
if (((local_68[0] != (undefined *)0x0) && (local_68[0] != PTR_DAT_1403440a0)) &&
(puVar13 = local_68[0] + -8, puVar13 != (undefined *)0x0)) {
uVar11 = FUN_14016d8c0();
local_90 = uVar11;
FUN_14016db50(uVar11);
local_88 = 1;
piVar1 = (int *)(puVar16 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar13);
}
FUN_14016dbe0(uVar11);
local_88 = 0;
}
puVar2 = puVar10;
puVar3 = puVar15;
param_1 = puVar4;
puVar10 = local_110;
lVar9 = puVar4[0x2eb];
}
FUN_14016dbe0(local_e0);
local_d8 = 0;
local_f0 = (HANDLE)0x0;
local_e8 = 0;
hFile = CreateFileW(local_res10,0x40000000,1,(LPSECURITY_ATTRIBUTES)0x0,2,0x80,(HANDLE)0x0);
pvVar18 = hFile;
if ((hFile == (HANDLE)0xffffffffffffffff) &&
(iVar6 = FUN_1401ad250(), hFile = (HANDLE)0x0, pvVar18 = local_f0, iVar6 < 0)) {
for (; puVar14 != (undefined8 *)0x0; puVar14 = (undefined8 *)((longlong)puVar14 + -1)) {
if (puVar3 == (undefined8 *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14004dc60(0x80004005);
}
puVar2 = (undefined8 *)*puVar3;
FUN_14004eb70(puVar3 + 2);
FUN_14016d970(puVar3);
puVar3 = puVar2;
}
uVar11 = 0;
}
else {
local_f0 = pvVar18;
local_d0 = 0;
DVar7 = SetFilePointer(hFile,0,(PLONG)((longlong)&local_d0 + 4),0);
if (DVar7 == 0xffffffff) {
FUN_1401ad250();
}
local_res18[0] = 0xfeff;
BVar8 = WriteFile(hFile,local_res18,2,(LPDWORD)&local_res8,(LPOVERLAPPED)0x0);
if (BVar8 == 0) {
FUN_1401ad250();
}
FUN_14016d8c0();
local_118 = PTR_DAT_1403440a0;
puVar16 = PTR_DAT_1403440a0;
while (puVar14 != (undefined8 *)0x0) {
FUN_1401d3d60(&local_110,&local_b8);
local_c8 = local_a8;
puVar14 = (undefined8 *)FUN_1401ad910(&local_c8,&local_c0,&DAT_140283898);
puVar16 = local_b8;
if (local_b8 == (undefined *)0x0) {
puVar16 = PTR_DAT_1403440a0;
}
uVar11 = *puVar14;
uVar12 = FUN_1401bbc90(local_b0);
FUN_14004c020(&local_118,L"[%s] [%s] %s\r\n",uVar12,uVar11,puVar16);
LOCK();
piVar1 = (int *)(local_c0 + -8);
iVar6 = *piVar1;
*piVar1 = *piVar1 + -1;
UNLOCK();
if (iVar6 + -1 < 1) {
(**(code **)(**(longlong **)(local_c0 + -0x18) + 8))();
}
hFile = local_f0;
puVar16 = local_118;
iVar6 = 0;
puVar13 = PTR_DAT_1403440a0;
if (local_118 != (undefined *)0x0) {
pvVar18 = (HANDLE)0x0;
if (local_118 != PTR_DAT_1403440a0) {
pvVar18 = (HANDLE)(ulonglong)*(uint *)(local_118 + -8);
}
iVar6 = (int)pvVar18;
puVar13 = local_118;
}
BVar8 = WriteFile(local_f0,puVar13,iVar6 * 2,(LPDWORD)&local_res20,(LPOVERLAPPED)0x0);
if (BVar8 == 0) {
FUN_1401ad250();
}
puVar13 = local_b8;
puVar10 = local_110;
puVar14 = local_f8;
if (((local_b8 != (undefined *)0x0) && (local_b8 != PTR_DAT_1403440a0)) &&
(puVar17 = local_b8 + -8, puVar17 != (undefined *)0x0)) {
uVar11 = FUN_14016d8c0();
local_a0 = uVar11;
FUN_14016db50(uVar11);
local_98 = 1;
piVar1 = (int *)(puVar13 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar17);
}
FUN_14016dbe0(uVar11);
local_98 = 0;
puVar10 = local_110;
puVar14 = local_f8;
}
}
if (hFile != (HANDLE)0x0) {
CloseHandle(hFile);
local_f0 = (HANDLE)0x0;
}
if (((puVar16 != (undefined *)0x0) && (puVar16 != PTR_DAT_1403440a0)) &&
(puVar16 + -8 != (undefined *)0x0)) {
uVar11 = FUN_14016d8c0();
local_78 = uVar11;
FUN_14016db50(uVar11);
local_70 = 1;
piVar1 = (int *)(puVar16 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar16 + -8);
}
FUN_14016dbe0(uVar11);
}
if (puVar10 != (undefined8 *)0x0) {
(**(code **)*puVar10)(puVar10,1);
}
uVar11 = 1;
}
return uVar11;
}