138 lines
4.8 KiB
C
138 lines
4.8 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401ec280 FUN_1401ec280
|
|
* 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_1401ec280(longlong param_1,longlong param_2)
|
|
|
|
{
|
|
undefined *puVar1;
|
|
int *piVar2;
|
|
longlong *plVar3;
|
|
undefined *puVar4;
|
|
char cVar5;
|
|
int iVar6;
|
|
longlong lVar7;
|
|
undefined8 uVar8;
|
|
longlong lVar9;
|
|
undefined8 *puVar10;
|
|
bool bVar11;
|
|
undefined1 auStack_19c8 [32];
|
|
undefined **local_19a8;
|
|
undefined4 local_19a0;
|
|
undefined2 local_199c;
|
|
undefined1 local_1998 [8];
|
|
undefined1 local_1990 [8];
|
|
longlong local_1988;
|
|
int local_197c;
|
|
undefined8 local_1970;
|
|
undefined1 local_1968;
|
|
undefined8 local_1960;
|
|
undefined *local_1958;
|
|
undefined4 uStack_1950;
|
|
undefined4 uStack_194c;
|
|
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 = 0x1401ec296;
|
|
local_1960 = 0xfffffffffffffffe;
|
|
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_19c8;
|
|
local_19a8 = Proud::AddrPort::vftable;
|
|
lVar9 = 0;
|
|
local_19a0 = 0;
|
|
local_199c = 0;
|
|
local_1958 = (undefined *)0x0;
|
|
uStack_1950 = 0;
|
|
uStack_194c = 0;
|
|
cVar5 = FUN_14016b370(param_2,&local_1958,0x10);
|
|
if ((cVar5 != '\0') && (cVar5 = FUN_14016bda0(param_2,&local_19a8), cVar5 != '\0')) {
|
|
plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x1570);
|
|
lVar7 = lVar9;
|
|
if (plVar3 != (longlong *)0x0) {
|
|
lVar7 = *plVar3;
|
|
}
|
|
bVar11 = local_1958 < *(undefined **)(lVar7 + 8);
|
|
iVar6 = 0;
|
|
if ((local_1958 != *(undefined **)(lVar7 + 8)) ||
|
|
(bVar11 = CONCAT44(uStack_194c,uStack_1950) < *(ulonglong *)(lVar7 + 0x10),
|
|
CONCAT44(uStack_194c,uStack_1950) != *(ulonglong *)(lVar7 + 0x10))) {
|
|
iVar6 = (1 - (uint)bVar11) - (uint)(bVar11 != 0);
|
|
}
|
|
if (iVar6 == 0) {
|
|
plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x1570);
|
|
lVar7 = lVar9;
|
|
if (plVar3 != (longlong *)0x0) {
|
|
lVar7 = *plVar3;
|
|
}
|
|
if ((*(int *)(lVar7 + 0xd0) == *(int *)(param_2 + 0x38)) &&
|
|
(*(short *)(lVar7 + 0xd4) == *(short *)(param_2 + 0x3c))) {
|
|
FUN_14016b440(local_1998);
|
|
FUN_14016abe0(local_1998);
|
|
FUN_14016b5a0(local_1998,0x800);
|
|
FUN_14016b5a0(local_1998,0);
|
|
FUN_14004eef0(local_1998,0xe);
|
|
plVar3 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x1570);
|
|
if (plVar3 != (longlong *)0x0) {
|
|
lVar9 = *plVar3;
|
|
}
|
|
local_1958 = *(undefined **)(lVar9 + 8);
|
|
uStack_1950 = *(undefined4 *)(lVar9 + 0x10);
|
|
uStack_194c = *(undefined4 *)(lVar9 + 0x14);
|
|
FUN_140153d20(local_1998,&local_1958);
|
|
uVar8 = FUN_1401c72e0(*(undefined8 *)(param_1 + 0x108),&local_1970);
|
|
FUN_14016c2f0(local_1998,uVar8);
|
|
FUN_14016c2f0(local_1998,&local_19a8);
|
|
local_cbc = 200;
|
|
local_cc0 = 0;
|
|
local_cc8 = local_1948;
|
|
FUN_14016e080(local_cb8,local_1998);
|
|
FUN_14016ded0(local_1948,local_cb8);
|
|
FUN_14016ddc0(local_cb8);
|
|
lVar9 = FUN_1401c71d0(*(undefined8 *)(param_1 + 0x108));
|
|
*(undefined4 *)(lVar9 + 0x140) = local_19a0;
|
|
*(undefined2 *)(lVar9 + 0x144) = local_199c;
|
|
local_1958 = (undefined *)0x0;
|
|
uStack_1950 = CONCAT31(uStack_1950._1_3_,1);
|
|
uVar8 = FUN_1401c71f0(*(undefined8 *)(param_1 + 0x108));
|
|
FUN_1401f9d30(uVar8,local_1948,&local_1958);
|
|
if ((*(char *)(*(longlong *)(param_1 + 0x108) + 0x1790) != '\0') ||
|
|
(*(int *)(*(longlong *)(param_1 + 0x108) + 0x6c8) != 0)) {
|
|
puVar10 = (undefined8 *)FUN_1401705d0(&local_19a8,&local_1958);
|
|
FUN_1401d4c70(*(undefined8 *)(param_1 + 0x108),1,
|
|
L"Message_ServerHolepunchAck. AddrOfHereAtServer=%s",*puVar10);
|
|
puVar4 = local_1958;
|
|
if ((local_1958 != (undefined *)0x0) &&
|
|
((local_1958 != PTR_DAT_1403440a0 &&
|
|
(puVar1 = local_1958 + -8, puVar1 != (undefined *)0x0)))) {
|
|
uVar8 = FUN_14016d8c0();
|
|
local_1970 = uVar8;
|
|
FUN_14016db50(uVar8);
|
|
local_1968 = 1;
|
|
piVar2 = (int *)(puVar4 + -4);
|
|
*piVar2 = *piVar2 + -1;
|
|
if (*piVar2 == 0) {
|
|
FUN_14016d970(puVar1);
|
|
}
|
|
FUN_14016dbe0(uVar8);
|
|
}
|
|
}
|
|
FUN_14016ddc0(local_1948);
|
|
local_1958 = local_1990;
|
|
FUN_14016d0e0(local_1990);
|
|
if ((local_1988 != 0) && (local_197c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|