server-re/decomp/DBCServer_Release_x64/full/functions/0x1401a8110.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 );
}