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
220
decomp/MessageServer_Release_x64/full/functions/0x1400cd030.c
Normal file
220
decomp/MessageServer_Release_x64/full/functions/0x1400cd030.c
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400cd030 FUN_1400cd030
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
||||
|
||||
void FUN_1400cd030(void *param_1,byte *param_2,undefined8 param_3,undefined8 param_4)
|
||||
|
||||
{
|
||||
byte bVar1;
|
||||
uint uVar2;
|
||||
undefined4 uVar3;
|
||||
int iVar4;
|
||||
uint uVar5;
|
||||
uint *puVar6;
|
||||
int iVar7;
|
||||
void *pvVar8;
|
||||
int iVar9;
|
||||
longlong lVar10;
|
||||
int iVar11;
|
||||
ulonglong uVar12;
|
||||
int iVar13;
|
||||
int iVar14;
|
||||
uint *puVar15;
|
||||
longlong lVar16;
|
||||
byte *pbVar17;
|
||||
longlong lVar18;
|
||||
undefined1 auStack_d8 [32];
|
||||
int local_b8;
|
||||
exception local_a8 [68];
|
||||
uint auStack_64 [9];
|
||||
ulonglong local_40;
|
||||
|
||||
local_40 = DAT_1401ac5a0 ^ (ulonglong)auStack_d8;
|
||||
iVar11 = (int)param_3;
|
||||
local_b8 = iVar11;
|
||||
if (((iVar11 != 0x10) && (iVar11 != 0x18)) && (iVar11 != 0x20)) {
|
||||
FUN_14006b700(local_a8,"Incorrect key length",param_3,param_4);
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_a8,(ThrowInfo *)&DAT_1401a93e8);
|
||||
}
|
||||
iVar4 = (int)param_4;
|
||||
if (((iVar4 != 0x10) && (iVar4 != 0x18)) && (iVar4 != 0x20)) {
|
||||
FUN_14006b700(local_a8,"Incorrect block length",param_3,param_4);
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_a8,(ThrowInfo *)&DAT_1401a93e8);
|
||||
}
|
||||
*(int *)((longlong)param_1 + 0x3c4) = iVar4;
|
||||
if (iVar11 == 0x10) {
|
||||
if (iVar4 == 0x10) {
|
||||
uVar3 = 10;
|
||||
}
|
||||
else {
|
||||
uVar3 = 0xe;
|
||||
if (iVar4 == 0x18) {
|
||||
uVar3 = 0xc;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (iVar11 != 0x18) {
|
||||
*(undefined4 *)((longlong)param_1 + 0x3c8) = 0xe;
|
||||
goto LAB_1400cd13f;
|
||||
}
|
||||
uVar3 = 0xe;
|
||||
if (iVar4 != 0x20) {
|
||||
uVar3 = 0xc;
|
||||
}
|
||||
}
|
||||
*(undefined4 *)((longlong)param_1 + 0x3c8) = uVar3;
|
||||
LAB_1400cd13f:
|
||||
iVar9 = 0;
|
||||
iVar4 = (int)(iVar4 + (iVar4 >> 0x1f & 3U)) >> 2;
|
||||
lVar16 = (longlong)iVar4;
|
||||
pvVar8 = param_1;
|
||||
if (-1 < *(int *)((longlong)param_1 + 0x3c8)) {
|
||||
do {
|
||||
if (0 < iVar4) {
|
||||
memset(pvVar8,0,lVar16 << 2);
|
||||
}
|
||||
iVar9 = iVar9 + 1;
|
||||
pvVar8 = (void *)((longlong)pvVar8 + 0x20);
|
||||
} while (iVar9 <= *(int *)((longlong)param_1 + 0x3c8));
|
||||
}
|
||||
iVar9 = 0;
|
||||
if (-1 < *(int *)((longlong)param_1 + 0x3c8)) {
|
||||
pvVar8 = (void *)((longlong)param_1 + 0x1e0);
|
||||
do {
|
||||
if (0 < iVar4) {
|
||||
memset(pvVar8,0,lVar16 << 2);
|
||||
}
|
||||
iVar9 = iVar9 + 1;
|
||||
pvVar8 = (void *)((longlong)pvVar8 + 0x20);
|
||||
} while (iVar9 <= *(int *)((longlong)param_1 + 0x3c8));
|
||||
}
|
||||
puVar6 = auStack_64;
|
||||
iVar9 = (*(int *)((longlong)param_1 + 0x3c8) + 1) * iVar4;
|
||||
uVar5 = (int)(iVar11 + (iVar11 >> 0x1f & 3U)) >> 2;
|
||||
lVar18 = (longlong)(int)uVar5;
|
||||
if (0 < (int)uVar5) {
|
||||
uVar12 = (ulonglong)uVar5;
|
||||
do {
|
||||
puVar6 = puVar6 + 1;
|
||||
bVar1 = param_2[2];
|
||||
*puVar6 = (uint)*param_2 << 0x18;
|
||||
*puVar6 = *puVar6 | (uint)param_2[1] << 0x10;
|
||||
*puVar6 = *puVar6 | (uint)bVar1 << 8;
|
||||
*puVar6 = *puVar6 | (uint)param_2[3];
|
||||
uVar12 = uVar12 - 1;
|
||||
param_2 = param_2 + 4;
|
||||
} while (uVar12 != 0);
|
||||
}
|
||||
iVar7 = 0;
|
||||
lVar10 = 0;
|
||||
iVar13 = iVar7;
|
||||
if (0 < (int)uVar5) {
|
||||
do {
|
||||
iVar13 = iVar7;
|
||||
if (iVar9 <= iVar7) break;
|
||||
uVar2 = auStack_64[lVar10 + 1];
|
||||
lVar10 = lVar10 + 1;
|
||||
iVar13 = iVar7 + 1;
|
||||
*(uint *)((longlong)param_1 + ((longlong)(iVar7 % iVar4) + (longlong)(iVar7 / iVar4) * 8) * 4)
|
||||
= uVar2;
|
||||
*(uint *)((longlong)param_1 +
|
||||
((longlong)(iVar7 % iVar4) + 0x78 +
|
||||
((longlong)*(int *)((longlong)param_1 + 0x3c8) - (longlong)(iVar7 / iVar4)) * 8) * 4)
|
||||
= uVar2;
|
||||
iVar7 = iVar13;
|
||||
} while (lVar10 < lVar18);
|
||||
}
|
||||
iVar7 = 1;
|
||||
if (iVar13 < iVar9) {
|
||||
pbVar17 = &DAT_140145cb0;
|
||||
do {
|
||||
uVar12 = (ulonglong)(int)auStack_64[lVar18];
|
||||
auStack_64[1] =
|
||||
auStack_64[1] ^
|
||||
CONCAT31(CONCAT21(CONCAT11((&DAT_140142ab0)[(longlong)uVar12 >> 0x10 & 0xff] ^ *pbVar17,
|
||||
(&DAT_140142ab0)[(longlong)uVar12 >> 8 & 0xff]),
|
||||
(&DAT_140142ab0)[uVar12 & 0xff]),
|
||||
(&DAT_140142ab0)[auStack_64[lVar18] >> 0x18]);
|
||||
if (uVar5 == 8) {
|
||||
lVar10 = 3;
|
||||
puVar6 = auStack_64 + 2;
|
||||
do {
|
||||
*puVar6 = *puVar6 ^ puVar6[-1];
|
||||
lVar10 = lVar10 + -1;
|
||||
puVar6 = puVar6 + 1;
|
||||
} while (lVar10 != 0);
|
||||
uVar12 = (ulonglong)(int)auStack_64[4];
|
||||
lVar10 = 5;
|
||||
auStack_64[5] =
|
||||
auStack_64[5] ^
|
||||
CONCAT31(CONCAT21(CONCAT11((&DAT_140142ab0)[auStack_64[4] >> 0x18],
|
||||
(&DAT_140142ab0)[(longlong)uVar12 >> 0x10 & 0xff]),
|
||||
(&DAT_140142ab0)[(longlong)uVar12 >> 8 & 0xff]),
|
||||
(&DAT_140142ab0)[uVar12 & 0xff]);
|
||||
do {
|
||||
puVar6 = auStack_64 + lVar10;
|
||||
lVar10 = lVar10 + 1;
|
||||
auStack_64[lVar10] = auStack_64[lVar10] ^ *puVar6;
|
||||
} while (lVar10 < 8);
|
||||
}
|
||||
else {
|
||||
lVar10 = 1;
|
||||
if (1 < lVar18) {
|
||||
do {
|
||||
puVar6 = auStack_64 + lVar10;
|
||||
lVar10 = lVar10 + 1;
|
||||
auStack_64[lVar10] = auStack_64[lVar10] ^ *puVar6;
|
||||
} while (lVar10 < lVar18);
|
||||
}
|
||||
}
|
||||
lVar10 = 0;
|
||||
iVar14 = iVar13;
|
||||
iVar11 = local_b8;
|
||||
if (0 < (int)uVar5) {
|
||||
do {
|
||||
if (iVar9 <= iVar14) goto LAB_1400cd425;
|
||||
uVar2 = auStack_64[lVar10 + 1];
|
||||
lVar10 = lVar10 + 1;
|
||||
iVar13 = iVar14 + 1;
|
||||
*(uint *)((longlong)param_1 +
|
||||
((longlong)(iVar14 % iVar4) + (longlong)(iVar14 / iVar4) * 8) * 4) = uVar2;
|
||||
*(uint *)((longlong)param_1 +
|
||||
((longlong)(iVar14 % iVar4) + 0x78 +
|
||||
((longlong)*(int *)((longlong)param_1 + 0x3c8) - (longlong)(iVar14 / iVar4)) * 8)
|
||||
* 4) = uVar2;
|
||||
iVar14 = iVar13;
|
||||
} while (lVar10 < lVar18);
|
||||
}
|
||||
pbVar17 = pbVar17 + 1;
|
||||
} while (iVar13 < iVar9);
|
||||
}
|
||||
LAB_1400cd425:
|
||||
if (1 < *(int *)((longlong)param_1 + 0x3c8)) {
|
||||
puVar6 = (uint *)((longlong)param_1 + 0x200);
|
||||
do {
|
||||
puVar15 = puVar6;
|
||||
lVar18 = lVar16;
|
||||
if (0 < lVar16) {
|
||||
do {
|
||||
uVar12 = (ulonglong)(int)*puVar15;
|
||||
lVar18 = lVar18 + -1;
|
||||
*puVar15 = *(uint *)(&DAT_140144cb0 + (ulonglong)(*puVar15 >> 0x18) * 4) ^
|
||||
*(uint *)(&DAT_1401450b0 + ((longlong)uVar12 >> 0x10 & 0xffU) * 4) ^
|
||||
*(uint *)(&DAT_1401454b0 + ((longlong)uVar12 >> 8 & 0xffU) * 4) ^
|
||||
*(uint *)(&DAT_1401458b0 + (uVar12 & 0xff) * 4);
|
||||
puVar15 = puVar15 + 1;
|
||||
} while (lVar18 != 0);
|
||||
}
|
||||
iVar7 = iVar7 + 1;
|
||||
puVar6 = puVar6 + 8;
|
||||
} while (iVar7 < *(int *)((longlong)param_1 + 0x3c8));
|
||||
}
|
||||
*(int *)((longlong)param_1 + 0x3c0) = iVar11;
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue