79 lines
2.7 KiB
C
79 lines
2.7 KiB
C
/* 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;
|
|
}
|
|
|