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

199 lines
6.7 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401a50f0 FUN_1401a50f0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401a50f0(longlong param_1,undefined8 param_2,longlong param_3)
{
int *piVar1;
undefined **ppuVar2;
ulonglong uVar3;
undefined **ppuVar4;
char cVar5;
int iVar6;
undefined8 uVar7;
undefined *puVar8;
undefined8 uVar9;
longlong *plVar10;
longlong *plVar11;
undefined *puVar12;
bool bVar13;
undefined1 auStack_da8 [32];
undefined *local_d88;
undefined **local_d78;
undefined4 local_d70;
undefined2 local_d6c;
undefined **local_d68;
undefined4 local_d60;
undefined2 local_d5c;
undefined8 local_d58;
undefined1 local_d50;
undefined *local_d48;
undefined *local_d40;
undefined1 local_d38;
undefined1 local_d30 [8];
undefined *local_d28;
longlong local_d20;
int local_d14;
undefined8 local_d08;
undefined8 local_d00;
undefined1 local_cf8;
undefined **local_ce8;
undefined4 uStack_ce0;
undefined2 uStack_cdc;
undefined2 uStack_cda;
undefined1 local_cd8 [3216];
ulonglong local_48;
local_d08 = 0xfffffffffffffffe;
local_48 = DAT_1403463c0 ^ (ulonglong)auStack_da8;
FUN_1401b1b20(param_3 + 0xc0);
local_d68 = Proud::AddrPort::vftable;
local_d60 = 0;
local_d5c = 0;
local_d78 = Proud::AddrPort::vftable;
local_d70 = 0;
local_d6c = 0;
local_ce8 = (undefined **)0x0;
uStack_ce0 = 0;
uStack_cdc = 0;
uStack_cda = 0;
cVar5 = FUN_14016b370(param_2,&local_ce8,0x10);
if (cVar5 == '\0') {
return;
}
cVar5 = FUN_14016bda0(param_2,&local_d68);
if (cVar5 != '\0') {
cVar5 = FUN_14016bda0(param_2,&local_d78);
if (cVar5 == '\0') {
return;
}
uVar7 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
local_d00 = uVar7;
FUN_14016db50(uVar7);
local_cf8 = 1;
if (DAT_14034c86f != '\0') {
(**(code **)(**(longlong **)(param_1 + 0x148) + 200))
(*(longlong **)(param_1 + 0x148),
L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_NotifyHolepunchSuccess");
}
bVar13 = *(undefined ***)(param_3 + 0x728) < local_ce8;
if ((*(undefined ***)(param_3 + 0x728) == local_ce8) &&
(uVar3 = CONCAT26(uStack_cda,CONCAT24(uStack_cdc,uStack_ce0)),
bVar13 = *(ulonglong *)(param_3 + 0x730) < uVar3, *(ulonglong *)(param_3 + 0x730) == uVar3))
{
iVar6 = 0;
}
else {
iVar6 = (1 - (uint)bVar13) - (uint)(bVar13 != 0);
}
if ((iVar6 == 0) && (*(char *)(param_3 + 0x700) == '\0')) {
*(undefined1 *)(param_3 + 0x700) = 1;
uVar9 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))();
*(undefined8 *)(param_3 + 0x198) = uVar9;
uVar9 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))();
*(undefined8 *)(param_3 + 0x1b8) = uVar9;
local_ce8 = Proud::AddrPort::vftable;
uStack_ce0 = local_d70;
uStack_cdc = local_d6c;
FUN_1401bc0e0(param_3 + 0x700,&local_ce8);
*(undefined4 *)(param_3 + 0x720) = local_d60;
*(undefined2 *)(param_3 + 0x724) = local_d5c;
FUN_140181450(*(undefined8 *)(param_1 + 0x148),param_3);
FUN_14016b440(local_d30);
FUN_14016abe0(local_d30);
FUN_14016b5a0(local_d30,0x800);
FUN_14016b5a0(local_d30,0);
FUN_14004eef0(local_d30,0xf);
local_ce8 = *(undefined ***)(param_3 + 0x728);
uStack_ce0 = *(undefined4 *)(param_3 + 0x730);
uStack_cdc = (undefined2)*(undefined4 *)(param_3 + 0x734);
uStack_cda = (undefined2)((uint)*(undefined4 *)(param_3 + 0x734) >> 0x10);
FUN_140153d20(local_d30,&local_ce8);
puVar8 = (undefined *)(**(code **)(*(longlong *)(param_3 + 0x108) + 0x10))();
local_d40 = puVar8;
FUN_14016db50(puVar8);
local_d38 = 1;
uVar9 = FUN_14016e080(local_cd8,local_d30);
local_ce8 = (undefined **)0x0;
uStack_ce0 = CONCAT31(uStack_ce0._1_3_,1);
FUN_1401ba860(*(undefined8 *)(param_3 + 0x748),uVar9,&local_ce8);
FUN_14016ddc0(local_cd8);
FUN_14016dbe0(puVar8);
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0) {
FUN_14016d8c0();
local_d40 = PTR_DAT_1403440a0;
plVar10 = (longlong *)FUN_1401705d0(&local_d78,&local_ce8);
plVar11 = (longlong *)FUN_1401705d0(&local_d68,&local_d48);
local_d88 = (undefined *)*plVar10;
if ((undefined *)*plVar10 == (undefined *)0x0) {
local_d88 = PTR_DAT_1403440a0;
}
puVar8 = (undefined *)*plVar11;
if ((undefined *)*plVar11 == (undefined *)0x0) {
puVar8 = PTR_DAT_1403440a0;
}
FUN_14004c020(&local_d40,&DAT_140281cd0,*(undefined4 *)(param_3 + 0x6f8),puVar8);
if (((local_d48 != (undefined *)0x0) && (local_d48 != PTR_DAT_1403440a0)) &&
(local_d48 + -8 != (undefined *)0x0)) {
uVar9 = FUN_14016d8c0();
local_d58 = uVar9;
FUN_14016db50(uVar9);
local_d50 = 1;
piVar1 = (int *)(local_d48 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(local_d48 + -8);
}
FUN_14016dbe0(uVar9);
}
ppuVar4 = local_ce8;
local_d48 = PTR_DAT_1403440a0;
if (((local_ce8 != (undefined **)0x0) && (local_ce8 != (undefined **)PTR_DAT_1403440a0)) &&
(ppuVar2 = local_ce8 + -1, ppuVar2 != (undefined **)0x0)) {
uVar9 = FUN_14016d8c0();
local_d58 = uVar9;
FUN_14016db50(uVar9);
local_d50 = 1;
piVar1 = (int *)((longlong)ppuVar4 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(ppuVar2);
}
FUN_14016dbe0(uVar9);
}
puVar8 = local_d40;
puVar12 = local_d40;
if (local_d40 == (undefined *)0x0) {
puVar12 = PTR_DAT_1403440a0;
}
FUN_1401adb30(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0x17f0),1,puVar12);
if (((puVar8 != (undefined *)0x0) && (puVar8 != PTR_DAT_1403440a0)) &&
(puVar8 + -8 != (undefined *)0x0)) {
uVar9 = FUN_14016d8c0();
local_d58 = uVar9;
FUN_14016db50(uVar9);
local_d50 = 1;
piVar1 = (int *)(puVar8 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar8 + -8);
}
FUN_14016dbe0(uVar9);
}
}
local_ce8 = &local_d28;
FUN_14016d0e0(&local_d28);
if ((local_d20 != 0) && (local_d14 < 0)) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
}
FUN_14016dbe0(uVar7);
return;
}
return;
}