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,140 @@
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400cde30 FUN_1400cde30
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */
void FUN_1400cde30(byte *param_1,byte *param_2,uint *param_3)
{
int iVar1;
longlong lVar2;
uint uVar3;
int iVar4;
longlong lVar5;
int iVar6;
uint *puVar7;
int iVar8;
int iVar9;
longlong lVar10;
int iVar11;
longlong lVar12;
longlong lVar13;
undefined1 auStack_118 [32];
int local_f8;
int local_f4;
int local_f0;
ulonglong local_e8;
size_t local_e0;
byte *local_d8;
uint *local_d0;
exception local_c8 [72];
undefined4 local_80;
uint auStack_64 [9];
ulonglong local_40;
local_40 = DAT_1401ac5a0 ^ (ulonglong)auStack_118;
local_d8 = param_2;
local_d0 = param_3;
if (0 < (int)param_3[0xf0]) {
uVar3 = param_3[0xf1];
if (uVar3 == 0x10) {
FUN_1400cd520(param_1,param_2,param_3);
}
else {
lVar12 = 0;
iVar4 = (int)(uVar3 + ((int)uVar3 >> 0x1f & 3U)) >> 2;
iVar6 = 0;
lVar13 = (longlong)iVar4;
if (iVar4 != 4) {
iVar6 = (iVar4 != 6) + 1;
}
lVar5 = (longlong)iVar6 * 0x20;
iVar6 = *(int *)(&DAT_140145cd8 + lVar5);
local_f8 = *(int *)(&DAT_140145ce0 + lVar5);
iVar9 = *(int *)(&DAT_140145ce8 + lVar5);
puVar7 = &local_80;
lVar5 = lVar12;
if (0 < iVar4) {
do {
lVar10 = lVar5 + 1;
*puVar7 = (uint)*param_1 << 0x18;
*puVar7 = *puVar7 | (uint)param_1[1] << 0x10;
*puVar7 = *puVar7 | (uint)param_1[2] << 8;
*puVar7 = *puVar7 | (uint)param_1[3];
*puVar7 = *puVar7 ^ param_3[lVar5];
puVar7 = puVar7 + 1;
lVar5 = lVar10;
param_1 = param_1 + 4;
} while (lVar10 < lVar13);
}
if (1 < (int)param_3[0xf2]) {
lVar5 = (longlong)param_3 - (longlong)&local_80;
local_e0 = (size_t)(iVar4 * 4);
local_e8 = (ulonglong)(param_3[0xf2] - 1);
local_f4 = iVar6;
local_f0 = iVar9;
do {
lVar5 = lVar5 + 0x20;
if (0 < iVar4) {
iVar11 = local_f8 - iVar6;
iVar8 = iVar9 - iVar6;
lVar10 = lVar12;
iVar1 = iVar6;
do {
lVar2 = lVar10 * 4;
lVar10 = lVar10 + 1;
auStack_64[lVar10] =
*(uint *)(&DAT_1401434b0 +
((longlong)(ulonglong)(uint)(&local_80)[(iVar11 + iVar1) % iVar4] >> 8 &
0xffU) * 4) ^
*(uint *)(&DAT_1401438b0 +
(ulonglong)*(byte *)(&local_80 + (iVar8 + iVar1) % iVar4) * 4) ^
*(uint *)(&DAT_1401430b0 +
((longlong)(ulonglong)(uint)(&local_80)[iVar1 % iVar4] >> 0x10 & 0xffU)
* 4) ^
*(uint *)(&DAT_140142cb0 +
(ulonglong)*(byte *)((longlong)&local_80 + lVar2 + 3) * 4) ^
*(uint *)((longlong)auStack_64 + lVar5 + lVar2 + 0xffffffffffffffe4U);
iVar6 = local_f4;
iVar9 = local_f0;
iVar1 = iVar1 + 1;
} while (lVar10 < lVar13);
}
memcpy(&local_80,auStack_64 + 1,local_e0);
local_e8 = local_e8 - 1;
param_2 = local_d8;
param_3 = local_d0;
} while (local_e8 != 0);
}
if (0 < iVar4) {
iVar6 = iVar6 - local_f8;
iVar9 = iVar9 - local_f8;
do {
lVar5 = lVar12 + (longlong)(int)param_3[0xf2] * 8;
lVar10 = lVar12 * 4;
lVar12 = lVar12 + 1;
uVar3 = param_3[lVar5];
*param_2 = (&DAT_140142ab0)[*(byte *)((longlong)&local_80 + lVar10 + 3)] ^
(byte)(uVar3 >> 0x18);
param_2[1] = (&DAT_140142ab0)
[(longlong)(ulonglong)(uint)(&local_80)[(local_f8 + iVar6) % iVar4] >> 0x10 &
0xff] ^ (byte)(uVar3 >> 0x10);
param_2[2] = (&DAT_140142ab0)
[(longlong)(ulonglong)(uint)(&local_80)[local_f8 % iVar4] >> 8 & 0xff] ^
(byte)(uVar3 >> 8);
iVar1 = local_f8 + iVar9;
local_f8 = local_f8 + 1;
param_2[3] = (&DAT_140142ab0)[*(byte *)(&local_80 + iVar1 % iVar4)] ^ (byte)uVar3;
param_2 = param_2 + 4;
} while (lVar12 < lVar13);
}
}
return;
}
FUN_14006ba50(local_c8,L"aes key is not initialized",param_3,param_1);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_c8,(ThrowInfo *)&DAT_1401a93e8);
}