91 lines
4.4 KiB
C
91 lines
4.4 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401af800 FUN_1401af800
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1401af800(byte *param_1,byte *param_2,uint *param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
uint uVar2;
|
|
uint uVar3;
|
|
ulonglong uVar4;
|
|
ulonglong uVar5;
|
|
ulonglong uVar6;
|
|
ulonglong uVar7;
|
|
uint uVar8;
|
|
uint *puVar9;
|
|
uint uVar10;
|
|
ulonglong uVar11;
|
|
undefined1 local_78 [80];
|
|
|
|
if ((int)param_3[0xf0] < 1) {
|
|
FUN_14016d300(local_78,L"aes key is not initialized");
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_78,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
uVar1 = ((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[2] << 8 |
|
|
(uint)param_1[3]) ^ *param_3;
|
|
uVar10 = param_3[0xf2];
|
|
uVar3 = ((uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[6] << 8 |
|
|
(uint)param_1[7]) ^ param_3[1];
|
|
uVar2 = ((uint)param_1[8] << 0x18 | (uint)param_1[9] << 0x10 | (uint)param_1[10] << 8 |
|
|
(uint)param_1[0xb]) ^ param_3[2];
|
|
uVar8 = ((uint)CONCAT11(param_1[0xe],param_1[0xf]) |
|
|
(uint)param_1[0xc] << 0x18 | (uint)param_1[0xd] << 0x10) ^ param_3[3];
|
|
if (1 < (int)uVar10) {
|
|
uVar11 = (ulonglong)(uVar10 - 1);
|
|
puVar9 = param_3 + 10;
|
|
do {
|
|
uVar5 = (ulonglong)(int)uVar3;
|
|
uVar6 = (ulonglong)(int)uVar2;
|
|
uVar7 = (ulonglong)(int)uVar8;
|
|
uVar4 = (ulonglong)(int)uVar1;
|
|
uVar3 = *(uint *)(&DAT_1402844b0 + ((longlong)uVar5 >> 0x18 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402848b0 + ((longlong)uVar6 >> 0x10 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_140284cb0 + ((longlong)uVar7 >> 8 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402850b0 + (uVar4 & 0xff) * 4) ^ puVar9[-1];
|
|
uVar2 = *(uint *)(&DAT_140284cb0 + ((longlong)uVar4 >> 8 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402844b0 + ((longlong)uVar6 >> 0x18 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402848b0 + ((longlong)uVar7 >> 0x10 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402850b0 + (uVar5 & 0xff) * 4) ^ *puVar9;
|
|
uVar8 = *(uint *)(&DAT_1402848b0 + ((longlong)uVar4 >> 0x10 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_140284cb0 + ((longlong)uVar5 >> 8 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402844b0 + ((longlong)uVar7 >> 0x18 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402850b0 + (uVar6 & 0xff) * 4) ^ puVar9[1];
|
|
uVar1 = *(uint *)(&DAT_1402844b0 + (ulonglong)(uVar1 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1402848b0 + ((longlong)uVar5 >> 0x10 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_140284cb0 + ((longlong)uVar6 >> 8 & 0xffU) * 4) ^
|
|
*(uint *)(&DAT_1402850b0 + (uVar7 & 0xff) * 4) ^ puVar9[-2];
|
|
uVar11 = uVar11 - 1;
|
|
puVar9 = puVar9 + 8;
|
|
} while (uVar11 != 0);
|
|
uVar10 = param_3[0xf2];
|
|
}
|
|
uVar6 = (ulonglong)(int)uVar2;
|
|
uVar5 = (ulonglong)(int)uVar8;
|
|
param_3 = param_3 + (longlong)(int)uVar10 * 8;
|
|
uVar4 = (ulonglong)(int)uVar1;
|
|
uVar11 = (ulonglong)(int)uVar3;
|
|
uVar10 = *param_3;
|
|
*param_2 = (&DAT_1402842b0)[(longlong)uVar4 >> 0x18 & 0xff] ^ (byte)(uVar10 >> 0x18);
|
|
param_2[1] = (&DAT_1402842b0)[(longlong)uVar11 >> 0x10 & 0xff] ^ (byte)(uVar10 >> 0x10);
|
|
param_2[2] = (&DAT_1402842b0)[(longlong)uVar6 >> 8 & 0xff] ^ (byte)(uVar10 >> 8);
|
|
param_2[3] = (&DAT_1402842b0)[uVar5 & 0xff] ^ (byte)uVar10;
|
|
uVar10 = param_3[1];
|
|
param_2[4] = (&DAT_1402842b0)[(longlong)uVar11 >> 0x18 & 0xff] ^ (byte)(uVar10 >> 0x18);
|
|
param_2[5] = (&DAT_1402842b0)[(longlong)uVar6 >> 0x10 & 0xff] ^ (byte)(uVar10 >> 0x10);
|
|
param_2[6] = (&DAT_1402842b0)[(longlong)uVar5 >> 8 & 0xff] ^ (byte)(uVar10 >> 8);
|
|
param_2[7] = (&DAT_1402842b0)[uVar4 & 0xff] ^ (byte)uVar10;
|
|
uVar10 = param_3[2];
|
|
param_2[8] = (&DAT_1402842b0)[(longlong)uVar6 >> 0x18 & 0xff] ^ (byte)(uVar10 >> 0x18);
|
|
param_2[9] = (&DAT_1402842b0)[(longlong)uVar5 >> 0x10 & 0xff] ^ (byte)(uVar10 >> 0x10);
|
|
param_2[10] = (&DAT_1402842b0)[(longlong)uVar4 >> 8 & 0xff] ^ (byte)(uVar10 >> 8);
|
|
param_2[0xb] = (&DAT_1402842b0)[uVar11 & 0xff] ^ (byte)uVar10;
|
|
uVar10 = param_3[3];
|
|
param_2[0xc] = (&DAT_1402842b0)[(longlong)uVar5 >> 0x18 & 0xff] ^ (byte)(uVar10 >> 0x18);
|
|
param_2[0xd] = (&DAT_1402842b0)[(longlong)uVar4 >> 0x10 & 0xff] ^ (byte)(uVar10 >> 0x10);
|
|
param_2[0xe] = (&DAT_1402842b0)[(longlong)uVar11 >> 8 & 0xff] ^ (byte)(uVar10 >> 8);
|
|
param_2[0xf] = (&DAT_1402842b0)[uVar6 & 0xff] ^ (byte)uVar10;
|
|
return;
|
|
}
|
|
|