decomp DBCServer_Release and inspect/document database
This commit is contained in:
parent
4b267cbe05
commit
7834b98bf0
28222 changed files with 843300 additions and 144 deletions
139
decomp/DBCServer_Release_x64/full/functions/0x1401b0110.c
Normal file
139
decomp/DBCServer_Release_x64/full/functions/0x1401b0110.c
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x1401b0110 FUN_1401b0110
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
||||
/* WARNING: Type propagation algorithm not settling */
|
||||
|
||||
void FUN_1401b0110(byte *param_1,byte *param_2,longlong param_3)
|
||||
|
||||
{
|
||||
int iVar1;
|
||||
longlong lVar2;
|
||||
undefined4 uVar3;
|
||||
int iVar4;
|
||||
longlong lVar5;
|
||||
int iVar6;
|
||||
uint *puVar7;
|
||||
int iVar8;
|
||||
int iVar9;
|
||||
int iVar10;
|
||||
longlong lVar11;
|
||||
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;
|
||||
longlong local_d0;
|
||||
undefined1 local_c8 [72];
|
||||
undefined4 local_80;
|
||||
uint auStack_64 [9];
|
||||
ulonglong local_40;
|
||||
|
||||
local_40 = DAT_1403463c0 ^ (ulonglong)auStack_118;
|
||||
local_d8 = param_2;
|
||||
local_d0 = param_3;
|
||||
if (0 < *(int *)(param_3 + 0x3c0)) {
|
||||
iVar4 = *(int *)(param_3 + 0x3c4);
|
||||
if (iVar4 == 0x10) {
|
||||
FUN_1401af800();
|
||||
}
|
||||
else {
|
||||
lVar11 = 0;
|
||||
iVar4 = (int)(iVar4 + (iVar4 >> 0x1f & 3U)) >> 2;
|
||||
iVar6 = 0;
|
||||
lVar12 = (longlong)iVar4;
|
||||
if (iVar4 != 4) {
|
||||
iVar6 = (iVar4 != 6) + 1;
|
||||
}
|
||||
lVar5 = (longlong)iVar6 * 0x20;
|
||||
iVar6 = *(int *)(&DAT_1402874d8 + lVar5);
|
||||
local_f8 = *(int *)(&DAT_1402874e0 + lVar5);
|
||||
iVar9 = *(int *)(&DAT_1402874e8 + lVar5);
|
||||
puVar7 = &local_80;
|
||||
lVar5 = lVar11;
|
||||
if (0 < iVar4) {
|
||||
do {
|
||||
lVar5 = 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 ^ *(uint *)(param_3 + -4 + lVar5 * 4);
|
||||
puVar7 = puVar7 + 1;
|
||||
param_1 = param_1 + 4;
|
||||
} while (lVar5 < lVar12);
|
||||
}
|
||||
if (1 < *(int *)(param_3 + 0x3c8)) {
|
||||
lVar5 = param_3 - (longlong)&local_80;
|
||||
local_e0 = (size_t)(iVar4 * 4);
|
||||
local_e8 = (ulonglong)(*(int *)(param_3 + 0x3c8) - 1);
|
||||
local_f4 = iVar6;
|
||||
local_f0 = iVar9;
|
||||
do {
|
||||
lVar5 = lVar5 + 0x20;
|
||||
if (0 < iVar4) {
|
||||
iVar10 = local_f8 - iVar6;
|
||||
iVar8 = iVar9 - iVar6;
|
||||
lVar13 = lVar11;
|
||||
iVar1 = iVar6;
|
||||
do {
|
||||
lVar2 = lVar13 * 4;
|
||||
lVar13 = lVar13 + 1;
|
||||
auStack_64[lVar13] =
|
||||
*(uint *)(&DAT_140284cb0 +
|
||||
((longlong)(ulonglong)(uint)(&local_80)[(iVar10 + iVar1) % iVar4] >> 8 &
|
||||
0xffU) * 4) ^
|
||||
*(uint *)(&DAT_1402850b0 +
|
||||
(ulonglong)*(byte *)(&local_80 + (iVar8 + iVar1) % iVar4) * 4) ^
|
||||
*(uint *)(&DAT_1402848b0 +
|
||||
((longlong)(ulonglong)(uint)(&local_80)[iVar1 % iVar4] >> 0x10 & 0xffU)
|
||||
* 4) ^
|
||||
*(uint *)(&DAT_1402844b0 +
|
||||
(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 (lVar13 < lVar12);
|
||||
}
|
||||
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 = lVar11 + (longlong)*(int *)(param_3 + 0x3c8) * 8;
|
||||
lVar13 = lVar11 * 4;
|
||||
lVar11 = lVar11 + 1;
|
||||
uVar3 = *(undefined4 *)(param_3 + lVar5 * 4);
|
||||
*param_2 = (&DAT_1402842b0)[*(byte *)((longlong)&local_80 + lVar13 + 3)] ^
|
||||
(byte)((uint)uVar3 >> 0x18);
|
||||
param_2[1] = (&DAT_1402842b0)
|
||||
[(longlong)(ulonglong)(uint)(&local_80)[(local_f8 + iVar6) % iVar4] >> 0x10 &
|
||||
0xff] ^ (byte)((uint)uVar3 >> 0x10);
|
||||
param_2[2] = (&DAT_1402842b0)
|
||||
[(longlong)(ulonglong)(uint)(&local_80)[local_f8 % iVar4] >> 8 & 0xff] ^
|
||||
(byte)((uint)uVar3 >> 8);
|
||||
iVar1 = local_f8 + iVar9;
|
||||
local_f8 = local_f8 + 1;
|
||||
param_2[3] = (&DAT_1402842b0)[*(byte *)(&local_80 + iVar1 % iVar4)] ^ (byte)uVar3;
|
||||
param_2 = param_2 + 4;
|
||||
} while (lVar11 < lVar12);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
FUN_14016d300(local_c8,L"aes key is not initialized");
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_c8,(ThrowInfo *)&DAT_1403417f8);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue