199 lines
6.7 KiB
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;
|
|
}
|
|
|