server-re/decomp/DBCServer_Release_x64/full/functions/0x1401a9ab0.c

187 lines
6.4 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401a9ab0 FUN_1401a9ab0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401a9ab0(longlong param_1,undefined8 param_2,undefined1 *param_3)
{
char cVar1;
ulonglong uVar2;
longlong lVar3;
longlong lVar4;
undefined8 uVar5;
undefined1 auStack_e68 [32];
ulonglong local_e48;
undefined1 local_e40;
undefined1 *local_e38;
undefined1 local_e30;
undefined **local_e28;
undefined8 local_e20;
longlong local_e18;
undefined8 local_e10;
undefined8 local_e08;
undefined **local_e00;
undefined8 local_df8;
longlong local_df0;
undefined8 local_de8;
undefined8 local_de0;
undefined **local_dd8;
undefined8 local_dd0;
longlong local_dc8;
undefined8 local_dc0;
undefined8 local_db8;
longlong local_db0;
undefined1 local_da8;
undefined **local_da0;
undefined8 local_d98;
longlong local_d90;
undefined8 local_d88;
undefined8 local_d80;
undefined1 local_d78 [8];
undefined1 local_d70 [8];
longlong local_d68;
undefined4 local_d60;
int local_d5c;
undefined8 local_d20;
undefined1 local_d18 [80];
undefined1 local_cc8 [3216];
ulonglong local_38;
local_d20 = 0xfffffffffffffffe;
local_38 = DAT_1403463c0 ^ (ulonglong)auStack_e68;
local_e38 = param_3;
local_db0 = param_1;
FUN_1401b1b20(param_3 + 0xc0);
lVar4 = 0;
local_df8 = 0;
local_df0 = 0;
local_de8 = 0;
local_de0 = 0;
local_e00 = Proud::ByteArray::vftable;
cVar1 = FUN_14016ba10(param_2,&local_e48);
uVar2 = local_e48;
if (((cVar1 != '\0') && (-1 < (int)local_e48)) && ((int)local_e48 <= DAT_140344d70)) {
FUN_14004f0e0(&local_e00,local_e48 & 0xffffffff);
lVar3 = local_df0;
if ((int)local_de8 == 0) {
lVar3 = lVar4;
}
cVar1 = FUN_14016b370(param_2,lVar3,uVar2 & 0xffffffff);
if (cVar1 != '\0') {
local_dd0 = 0;
local_dc8 = 0;
local_dc0 = 0;
local_db8 = 0;
local_dd8 = Proud::ByteArray::vftable;
cVar1 = FUN_14016ba10(param_2,&local_e48);
uVar2 = local_e48;
if (((cVar1 != '\0') && (-1 < (int)local_e48)) && ((int)local_e48 <= DAT_140344d70)) {
FUN_14004f0e0(&local_dd8,local_e48 & 0xffffffff);
lVar3 = local_dc8;
if ((int)local_dc0 == 0) {
lVar3 = lVar4;
}
cVar1 = FUN_14016b370(param_2,lVar3,uVar2 & 0xffffffff);
if (cVar1 != '\0') {
local_d98 = 0;
local_d90 = 0;
local_d88 = 0;
local_d80 = 0;
local_da0 = Proud::ByteArray::vftable;
FUN_1401c1860(&local_e48,&local_da0,&local_e00,*(longlong *)(param_1 + 0x148) + 0xc48);
if ((local_e48 == 0) || (*(longlong *)(local_e48 + 0x38) == 0)) {
FUN_140154b00(&local_e48);
uVar2 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
local_e48 = uVar2;
FUN_14016db50(uVar2);
local_e40 = 1;
if (DAT_14034c86f != '\0') {
(**(code **)(**(longlong **)(param_1 + 0x148) + 200))
(*(longlong **)(param_1 + 0x148),
L"Proud::CNetThreads_S::NetworkerThread_ProcessMessage_NotifyCSEncryptedSessionKey"
);
}
lVar3 = lVar4;
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x1708) != 0) {
lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x16f8);
}
for (; lVar3 != 0; lVar3 = *(longlong *)(lVar3 + 0x18)) {
if (param_3 == *(undefined1 **)(lVar3 + 0x10)) {
lVar3 = local_d90;
if ((int)local_d88 == 0) {
lVar3 = lVar4;
}
FUN_1401af310(param_3 + 0x288,lVar3,
*(uint *)(*(longlong *)(param_1 + 0x148) + 0x244) >> 3,0x10);
local_e20 = 0;
local_e18 = 0;
local_e10 = 0;
local_e08 = 0;
local_e28 = Proud::ByteArray::vftable;
cVar1 = FUN_1401b0d80(&local_dd8,&local_e28,param_3 + 0x288);
if (cVar1 == '\0') {
FUN_14016d300(local_d18,L"Decrypt Fast EncryptKey Error");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_d18,(ThrowInfo *)&DAT_1403417f8);
}
lVar3 = local_e18;
if ((int)local_e10 == 0) {
lVar3 = lVar4;
}
FUN_1401c0b90(param_3 + 0x658,lVar3,
*(uint *)(*(longlong *)(param_1 + 0x148) + 0x248) >> 3);
FUN_14019a9e0(&local_e28);
param_3[0x688] = 1;
FUN_14016dbe0(uVar2);
local_e40 = 0;
FUN_14016b440(local_d78);
FUN_14016abe0(local_d78);
FUN_14016b5a0(local_d78,0x800);
FUN_14016b5a0(local_d78,0);
FUN_14004eef0(local_d78,6);
lVar4 = (**(code **)(*(longlong *)(param_3 + 0x108) + 0x10))();
local_db0 = lVar4;
FUN_14016db50(lVar4);
local_da8 = 1;
uVar5 = FUN_14016e080(local_cc8,local_d78);
local_e38 = (undefined1 *)0x0;
local_e30 = 1;
FUN_1401ba860(*(undefined8 *)(param_3 + 0x748),uVar5,&local_e38);
FUN_14016ddc0(local_cc8);
FUN_14016dbe0(lVar4);
local_e38 = local_d70;
FUN_14016d0e0(local_d70);
if (local_d68 != 0) {
if (local_d5c < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
local_d60 = 0;
}
FUN_14019a9e0(&local_da0);
FUN_14019a9e0(&local_dd8);
goto LAB_1401a9f83;
}
}
FUN_14016dbe0(uVar2);
FUN_14019a9e0(&local_da0);
FUN_14019a9e0(&local_dd8);
}
else {
FUN_140154b00(&local_e48);
FUN_14019a9e0(&local_da0);
FUN_14019a9e0(&local_dd8);
}
goto LAB_1401a9f83;
}
}
FUN_14019a9e0(&local_dd8);
}
}
LAB_1401a9f83:
FUN_14019a9e0(&local_e00);
return;
}