139 lines
4.8 KiB
C
139 lines
4.8 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401fa820 FUN_1401fa820
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1401fa820(longlong *param_1,longlong param_2,ulonglong *param_3,longlong param_4)
|
|
|
|
{
|
|
undefined *puVar1;
|
|
int *piVar2;
|
|
longlong lVar3;
|
|
int iVar4;
|
|
longlong lVar5;
|
|
undefined8 uVar6;
|
|
longlong *plVar7;
|
|
short sVar8;
|
|
undefined *puVar9;
|
|
bool bVar10;
|
|
undefined1 auStack_19b8 [32];
|
|
undefined *local_1998;
|
|
undefined1 local_1990;
|
|
undefined1 local_1988 [8];
|
|
undefined1 local_1980 [8];
|
|
longlong local_1978;
|
|
int local_196c;
|
|
undefined8 local_1960;
|
|
undefined1 local_1958;
|
|
undefined8 local_1950;
|
|
undefined1 local_1948 [3200];
|
|
undefined1 *local_cc8;
|
|
undefined4 local_cc0;
|
|
undefined4 local_cbc;
|
|
undefined1 local_cb8 [3216];
|
|
ulonglong local_28;
|
|
undefined8 uStack_20;
|
|
|
|
uStack_20 = 0x1401fa836;
|
|
local_1950 = 0xfffffffffffffffe;
|
|
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_19b8;
|
|
lVar3 = param_1[2];
|
|
if ((lVar3 != 0) && (*(int *)(lVar3 + 8) == 0)) {
|
|
bVar10 = *param_3 < *(ulonglong *)(lVar3 + 0x1c);
|
|
if ((*param_3 == *(ulonglong *)(lVar3 + 0x1c)) &&
|
|
(bVar10 = param_3[1] < *(ulonglong *)(lVar3 + 0x24),
|
|
param_3[1] == *(ulonglong *)(lVar3 + 0x24))) {
|
|
iVar4 = 0;
|
|
}
|
|
else {
|
|
iVar4 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
|
|
}
|
|
if ((iVar4 == 0) && (*(int *)(lVar3 + 0x18) < 1)) {
|
|
plVar7 = *(longlong **)(*(longlong *)(*param_1 + 0x670) + 0x1570);
|
|
sVar8 = DAT_140344454;
|
|
iVar4 = DAT_140344450;
|
|
if ((plVar7 != (longlong *)0x0) && (*plVar7 != 0)) {
|
|
lVar5 = 0;
|
|
if (plVar7 != (longlong *)0x0) {
|
|
lVar5 = *plVar7;
|
|
}
|
|
sVar8 = *(short *)(lVar5 + 0xd4);
|
|
iVar4 = *(int *)(lVar5 + 0xd0);
|
|
}
|
|
if ((((iVar4 == *(int *)(param_2 + 0x38)) && (sVar8 == *(short *)(param_2 + 0x3c))) &&
|
|
(plVar7 = *(longlong **)(*param_1 + 0x18), plVar7 != (longlong *)0x0)) && (*plVar7 != 0))
|
|
{
|
|
FUN_14016b440(local_1988);
|
|
FUN_14016abe0(local_1988);
|
|
FUN_14016b5a0(local_1988,0x800);
|
|
FUN_14016b5a0(local_1988,0);
|
|
FUN_14004eef0(local_1988,0x12);
|
|
if ((*(longlong **)(*param_1 + 0x18) == (longlong *)0x0) ||
|
|
(lVar5 = **(longlong **)(*param_1 + 0x18), lVar5 == 0)) {
|
|
lVar5 = 0;
|
|
}
|
|
else {
|
|
lVar5 = lVar5 + -0x40;
|
|
}
|
|
FUN_14016c2f0(local_1988,lVar5 + 0x128);
|
|
FUN_14016c2f0(local_1988,param_4);
|
|
FUN_140153c40(local_1988,*(undefined4 *)(*param_1 + 0x56c));
|
|
local_cbc = 200;
|
|
local_cc0 = 0;
|
|
local_cc8 = local_1948;
|
|
FUN_14016e080(local_cb8,local_1988);
|
|
FUN_14016ded0(local_1948,local_cb8);
|
|
FUN_14016ddc0();
|
|
if ((*(longlong **)(*param_1 + 0x18) == (longlong *)0x0) ||
|
|
(lVar5 = **(longlong **)(*param_1 + 0x18), lVar5 == 0)) {
|
|
lVar5 = 0;
|
|
}
|
|
else {
|
|
lVar5 = lVar5 + -0x40;
|
|
}
|
|
*(undefined4 *)(lVar5 + 0x140) = *(undefined4 *)(param_4 + 8);
|
|
*(undefined2 *)(lVar5 + 0x144) = *(undefined2 *)(param_4 + 0xc);
|
|
local_1998 = (undefined *)0x0;
|
|
local_1990 = 1;
|
|
uVar6 = FUN_1401c71f0(*(undefined8 *)(*param_1 + 0x670));
|
|
FUN_1401f9d30(uVar6,local_1948,&local_1998);
|
|
if ((*(char *)(*(longlong *)(*param_1 + 0x670) + 0x1790) != '\0') ||
|
|
(*(int *)(*(longlong *)(*param_1 + 0x670) + 0x6c8) != 0)) {
|
|
plVar7 = (longlong *)FUN_1401705d0(param_4,&local_1998);
|
|
puVar9 = (undefined *)*plVar7;
|
|
if ((undefined *)*plVar7 == (undefined *)0x0) {
|
|
puVar9 = PTR_DAT_1403440a0;
|
|
}
|
|
FUN_1401d4c70(*(undefined8 *)(*param_1 + 0x670),1,
|
|
L"Message_PeerUdp_ServerHolepunchAck. AddrOfHereAtServer=%s",puVar9);
|
|
puVar9 = local_1998;
|
|
if (((local_1998 != (undefined *)0x0) && (local_1998 != PTR_DAT_1403440a0)) &&
|
|
(puVar1 = local_1998 + -8, puVar1 != (undefined *)0x0)) {
|
|
uVar6 = FUN_14016d8c0();
|
|
local_1960 = uVar6;
|
|
FUN_14016db50(uVar6);
|
|
local_1958 = 1;
|
|
piVar2 = (int *)(puVar9 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(puVar1);
|
|
}
|
|
FUN_14016dbe0(uVar6);
|
|
}
|
|
}
|
|
*(int *)(lVar3 + 0x18) = *(int *)(lVar3 + 0x18) + 1;
|
|
FUN_14016ddc0(local_1948);
|
|
local_1998 = local_1980;
|
|
FUN_14016d0e0(local_1980);
|
|
if ((local_1978 != 0) && (local_196c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|