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,79 @@
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401c0b90 FUN_1401c0b90
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401c0b90(longlong param_1,longlong param_2,int param_3)
{
undefined1 uVar1;
longlong lVar2;
ulonglong uVar3;
int iVar4;
ulonglong uVar5;
ulonglong uVar6;
ulonglong uVar7;
undefined1 auStack_198 [32];
undefined1 local_178 [80];
byte abStack_128 [256];
ulonglong local_28;
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_198;
if (param_3 == 0) {
*(undefined1 *)(param_1 + 0x28) = 1;
}
else {
if (param_2 == 0) {
FUN_14016d300(local_178,L"RC4 ExpandFrom Error. inputkey is NULL");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_178,(ThrowInfo *)&DAT_1403417f8);
}
FUN_14004f0e0(param_1,param_3);
uVar5 = 0;
uVar6 = uVar5;
if (0 < param_3) {
do {
iVar4 = (int)uVar6;
if ((iVar4 < 0) || (*(int *)(param_1 + 0x18) <= iVar4)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
*(char *)((longlong)iVar4 + *(longlong *)(param_1 + 0x10)) = (char)uVar6;
uVar6 = (ulonglong)(iVar4 + 1U);
abStack_128[iVar4] = *(byte *)(iVar4 % param_3 + param_2);
} while ((int)(iVar4 + 1U) < param_3);
}
uVar6 = uVar5;
uVar7 = uVar5;
if (0 < param_3) {
do {
if ((longlong)uVar6 < 0) {
LAB_1401c0cd2:
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
if (*(int *)(param_1 + 0x18) <= (int)uVar7) goto LAB_1401c0cd2;
lVar2 = *(longlong *)(param_1 + 0x10);
uVar3 = (longlong)
(int)((uint)*(byte *)(lVar2 + uVar6) + (uint)abStack_128[uVar6] + (int)uVar5) %
(longlong)param_3;
uVar5 = uVar3 & 0xffffffff;
iVar4 = (int)((longlong)((ulonglong)(uint)((int)uVar3 >> 0x1f) << 0x20 | uVar3 & 0xffffffff)
% (longlong)param_3);
if ((iVar4 < 0) || (*(int *)(param_1 + 0x18) <= iVar4)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
uVar1 = *(undefined1 *)(lVar2 + uVar6);
uVar6 = uVar6 + 1;
uVar7 = (ulonglong)((int)uVar7 + 1);
*(undefined1 *)(lVar2 + -1 + uVar6) = *(undefined1 *)(iVar4 + lVar2);
*(undefined1 *)(iVar4 + lVar2) = uVar1;
} while ((longlong)uVar6 < (longlong)param_3);
}
*(undefined1 *)(param_1 + 0x28) = 1;
}
return;
}