184 lines
6.6 KiB
C
184 lines
6.6 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401a8110 FUN_1401a8110
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1401a8110(longlong param_1,undefined8 param_2,longlong param_3)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
undefined8 uVar3;
|
|
longlong lVar4;
|
|
undefined **ppuVar5;
|
|
undefined8 uVar6;
|
|
bool bVar7;
|
|
undefined1 auStack_da8 [32];
|
|
undefined **local_d88;
|
|
undefined *local_d80;
|
|
longlong local_d78;
|
|
ulonglong local_d70;
|
|
undefined8 local_d68;
|
|
undefined **local_d60;
|
|
undefined8 local_d58;
|
|
longlong local_d50;
|
|
undefined8 local_d48;
|
|
undefined8 local_d40;
|
|
undefined **local_d38;
|
|
undefined8 local_d30;
|
|
undefined8 local_d28;
|
|
undefined8 local_d20;
|
|
undefined8 local_d18;
|
|
undefined8 local_d10;
|
|
undefined1 local_d08;
|
|
undefined8 local_d00;
|
|
undefined **local_cf8;
|
|
undefined4 uStack_cf0;
|
|
undefined4 uStack_cec;
|
|
undefined **local_ce8;
|
|
undefined4 uStack_ce0;
|
|
undefined4 uStack_cdc;
|
|
undefined1 local_cd8 [3216];
|
|
ulonglong local_48;
|
|
|
|
local_d00 = 0xfffffffffffffffe;
|
|
local_48 = DAT_1403463c0 ^ (ulonglong)auStack_da8;
|
|
FUN_1401b1b20(param_3 + 0xc0);
|
|
uVar3 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
|
|
local_d10 = uVar3;
|
|
FUN_14016db50(uVar3);
|
|
local_d08 = 1;
|
|
if (DAT_14034c86f != '\0') {
|
|
(**(code **)(**(longlong **)(param_1 + 0x148) + 200))
|
|
(*(longlong **)(param_1 + 0x148),
|
|
L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_NotifyServerConnectionRequestData"
|
|
);
|
|
}
|
|
iVar2 = 0;
|
|
lVar4 = 0;
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x1708) != 0) {
|
|
lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x16f8);
|
|
}
|
|
do {
|
|
if (lVar4 == 0) {
|
|
FUN_1401a7880(param_1,param_3);
|
|
LAB_1401a84ef:
|
|
FUN_14016dbe0(uVar3);
|
|
return;
|
|
}
|
|
if (param_3 == *(longlong *)(lVar4 + 0x10)) {
|
|
local_d58 = 0;
|
|
local_d50 = 0;
|
|
local_d48 = 0;
|
|
local_d40 = 0;
|
|
local_d60 = Proud::ByteArray::vftable;
|
|
cVar1 = FUN_14016ba10(param_2,&local_cf8);
|
|
ppuVar5 = local_cf8;
|
|
if (((cVar1 != '\0') && (-1 < (int)local_cf8)) && ((int)local_cf8 <= DAT_140344d70)) {
|
|
FUN_14004f0e0(&local_d60,(ulonglong)local_cf8 & 0xffffffff);
|
|
lVar4 = local_d50;
|
|
if ((int)local_d48 == 0) {
|
|
lVar4 = 0;
|
|
}
|
|
cVar1 = FUN_14016b370(param_2,lVar4,(ulonglong)ppuVar5 & 0xffffffff);
|
|
if (cVar1 != '\0') {
|
|
local_cf8 = (undefined **)0x0;
|
|
uStack_cf0 = 0;
|
|
uStack_cec = 0;
|
|
cVar1 = FUN_14016b370(param_2,&local_cf8,0x10);
|
|
if (cVar1 == '\0') {
|
|
FUN_1401a7880(param_1,param_3);
|
|
FUN_14019a9e0(&local_d60);
|
|
}
|
|
else {
|
|
local_ce8 = local_cf8;
|
|
uStack_ce0 = uStack_cf0;
|
|
uStack_cdc = uStack_cec;
|
|
cVar1 = FUN_14016b370(param_2,&local_cf8,4);
|
|
if (cVar1 == '\0') {
|
|
FUN_1401a7880(param_1,param_3);
|
|
FUN_14019a9e0(&local_d60);
|
|
}
|
|
else {
|
|
lVar4 = *(longlong *)(param_1 + 0x148);
|
|
bVar7 = local_ce8 < *(undefined ***)(lVar4 + 1000);
|
|
if ((local_ce8 != *(undefined ***)(lVar4 + 1000)) ||
|
|
(bVar7 = CONCAT44(uStack_cdc,uStack_ce0) < *(ulonglong *)(lVar4 + 0x3f0),
|
|
CONCAT44(uStack_cdc,uStack_ce0) != *(ulonglong *)(lVar4 + 0x3f0))) {
|
|
iVar2 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
|
|
}
|
|
if ((iVar2 == 0) && ((int)local_cf8 == *(int *)(lVar4 + 0x220))) {
|
|
cVar1 = FUN_1401723c0(param_3 + 0x288);
|
|
if (cVar1 == '\x01') {
|
|
lVar4 = *(longlong *)(param_1 + 0x148);
|
|
if (*(longlong *)(lVar4 + 0x758) == 0) {
|
|
local_d80 = (undefined *)0x0;
|
|
local_d78 = 0;
|
|
local_d70 = 0;
|
|
local_d68 = 0;
|
|
local_d88 = Proud::ByteArray::vftable;
|
|
FUN_14018d970(lVar4,param_3,&local_d88);
|
|
FUN_14019a9e0(&local_d88);
|
|
}
|
|
else {
|
|
local_cf8 = Proud::AddrPort::vftable;
|
|
uStack_cf0 = *(undefined4 *)(*(longlong *)(param_3 + 0x748) + 0x130);
|
|
uStack_cec = CONCAT22(uStack_cec._2_2_,
|
|
*(undefined2 *)(*(longlong *)(param_3 + 0x748) + 0x134));
|
|
FUN_1401951f0(lVar4,&local_cf8,&local_d60);
|
|
}
|
|
FUN_14019a9e0(&local_d60);
|
|
}
|
|
else {
|
|
FUN_14016b440(&local_d88);
|
|
FUN_14016abe0(&local_d88);
|
|
FUN_14016b5a0(&local_d88,0x800);
|
|
FUN_14016b5a0(&local_d88,0);
|
|
FUN_14004eef0(&local_d88,9);
|
|
local_d30 = 0;
|
|
local_d28 = 0;
|
|
local_d20 = 0;
|
|
local_d18 = 0;
|
|
local_d38 = Proud::ByteArray::vftable;
|
|
FUN_14016cac0(&local_d88,0);
|
|
FUN_14019a9e0(&local_d38);
|
|
ppuVar5 = (undefined **)(**(code **)(*(longlong *)(param_3 + 0x108) + 0x10))();
|
|
local_ce8 = ppuVar5;
|
|
FUN_14016db50(ppuVar5);
|
|
uStack_ce0 = CONCAT31(uStack_ce0._1_3_,1);
|
|
uVar6 = FUN_14016e080(local_cd8,&local_d88);
|
|
local_cf8 = (undefined **)0x0;
|
|
uStack_cf0 = CONCAT31(uStack_cf0._1_3_,1);
|
|
FUN_1401ba860(*(undefined8 *)(param_3 + 0x748),uVar6,&local_cf8);
|
|
FUN_14016ddc0(local_cd8);
|
|
FUN_14016dbe0(ppuVar5);
|
|
local_cf8 = &local_d80;
|
|
FUN_14016d0e0(&local_d80);
|
|
if (local_d78 != 0) {
|
|
if ((longlong)local_d70 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_d70 = local_d70 & 0xffffffff00000000;
|
|
}
|
|
FUN_14019a9e0(&local_d60);
|
|
}
|
|
}
|
|
else {
|
|
FUN_1401a7880(param_1,param_3);
|
|
FUN_14019a9e0(&local_d60);
|
|
}
|
|
}
|
|
}
|
|
goto LAB_1401a84ef;
|
|
}
|
|
}
|
|
FUN_1401a7880(param_1,param_3);
|
|
FUN_14019a9e0(&local_d60);
|
|
goto LAB_1401a84ef;
|
|
}
|
|
lVar4 = *(longlong *)(lVar4 + 0x18);
|
|
} while( true );
|
|
}
|
|
|