224 lines
7.7 KiB
C
224 lines
7.7 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401fc690 FUN_1401fc690
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1401fc690(longlong param_1,char param_2,int param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
double dVar2;
|
|
int iVar3;
|
|
undefined8 uVar4;
|
|
undefined8 *puVar5;
|
|
longlong *plVar6;
|
|
longlong *plVar7;
|
|
longlong lVar8;
|
|
longlong lVar9;
|
|
longlong lVar10;
|
|
undefined *puVar11;
|
|
undefined *puVar12;
|
|
undefined *puVar13;
|
|
int iVar14;
|
|
bool bVar15;
|
|
double dVar16;
|
|
double dVar17;
|
|
double dVar18;
|
|
undefined1 local_res8 [8];
|
|
int local_res18 [2];
|
|
undefined *local_res20;
|
|
undefined8 in_stack_fffffffffffffeb8;
|
|
undefined4 uVar19;
|
|
undefined *local_e8;
|
|
undefined *local_e0;
|
|
undefined *local_d8;
|
|
undefined *local_d0;
|
|
undefined8 local_c8;
|
|
undefined8 local_c0;
|
|
undefined8 local_b8;
|
|
undefined1 local_b0;
|
|
undefined8 local_a8;
|
|
undefined1 local_a0;
|
|
undefined8 local_98;
|
|
undefined1 local_90;
|
|
undefined8 local_88;
|
|
undefined1 local_80;
|
|
undefined8 local_78;
|
|
undefined1 local_70;
|
|
undefined1 local_68 [48];
|
|
|
|
uVar19 = (undefined4)((ulonglong)in_stack_fffffffffffffeb8 >> 0x20);
|
|
local_c0 = 0xfffffffffffffffe;
|
|
if (*(char *)(param_1 + 0x608) == '\0') {
|
|
local_res18[0] = param_3;
|
|
if (((param_2 != '\0') && (param_3 != 0x1d)) &&
|
|
((lVar8 = *(longlong *)(param_1 + 0x670), *(char *)(lVar8 + 0x1790) != '\0' ||
|
|
(*(int *)(lVar8 + 0x6c8) != 0)))) {
|
|
local_res8[0] = 0;
|
|
(**(code **)(*(longlong *)(lVar8 + 0x70) + 0x158))((longlong *)(lVar8 + 0x70),local_res8);
|
|
bVar15 = *(int *)(param_1 + 0x588) != *(int *)(param_1 + 0x578);
|
|
FUN_1401d37e0(*(undefined8 *)(param_1 + 0x670),&local_e0);
|
|
dVar16 = (double)(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x670) + 0x70) + 0x1c0))()
|
|
;
|
|
dVar18 = *(double *)(param_1 + 0x610);
|
|
if ((*(longlong **)(param_1 + 0x18) == (longlong *)0x0) ||
|
|
(lVar8 = **(longlong **)(param_1 + 0x18), lVar8 == 0)) {
|
|
lVar8 = 0;
|
|
}
|
|
else {
|
|
lVar8 = lVar8 + -0x40;
|
|
}
|
|
dVar17 = (double)(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x670) + 0x70) + 0x1c0))()
|
|
;
|
|
dVar2 = *(double *)(lVar8 + 0x180);
|
|
iVar14 = 1;
|
|
if (!bVar15) {
|
|
iVar14 = 2;
|
|
}
|
|
plVar7 = (longlong *)(*(longlong *)(param_1 + 0x670) + 0x70);
|
|
plVar7 = (longlong *)(**(code **)(*plVar7 + 0xb0))(plVar7,&local_d8);
|
|
puVar11 = (undefined *)*plVar7;
|
|
if (puVar11 == (undefined *)0x0) {
|
|
iVar3 = 0;
|
|
}
|
|
else if (puVar11 == PTR_DAT_1403440a0) {
|
|
iVar3 = 0;
|
|
}
|
|
else {
|
|
iVar3 = *(int *)(puVar11 + -8);
|
|
}
|
|
if (((local_d8 != (undefined *)0x0) && (local_d8 != PTR_DAT_1403440a0)) &&
|
|
(local_d8 + -8 != (undefined *)0x0)) {
|
|
uVar4 = FUN_14016d8c0();
|
|
local_78 = uVar4;
|
|
FUN_14016db50(uVar4);
|
|
local_70 = 1;
|
|
piVar1 = (int *)(local_d8 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(local_d8 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar4);
|
|
}
|
|
if (iVar3 != 0) {
|
|
iVar14 = iVar14 + 1;
|
|
}
|
|
FUN_14016d8c0();
|
|
local_e8 = PTR_DAT_1403440a0;
|
|
puVar5 = (undefined8 *)FUN_1401c72e0(*(undefined8 *)(param_1 + 0x670),local_68);
|
|
plVar7 = (longlong *)FUN_14016f6b0(&local_d0);
|
|
plVar6 = (longlong *)(**(code **)*puVar5)(puVar5);
|
|
puVar11 = (undefined *)*plVar7;
|
|
if ((undefined *)*plVar7 == (undefined *)0x0) {
|
|
puVar11 = PTR_DAT_1403440a0;
|
|
}
|
|
puVar12 = local_e0;
|
|
if (local_e0 == (undefined *)0x0) {
|
|
puVar12 = PTR_DAT_1403440a0;
|
|
}
|
|
puVar13 = (undefined *)*plVar6;
|
|
if ((undefined *)*plVar6 == (undefined *)0x0) {
|
|
puVar13 = PTR_DAT_1403440a0;
|
|
}
|
|
lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x670) + 0x5d8);
|
|
lVar10 = 0;
|
|
if (lVar8 != 0) {
|
|
lVar10 = *(longlong *)(lVar8 + 0x38);
|
|
}
|
|
lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x670) + 0x5d8);
|
|
if (lVar8 == 0) {
|
|
lVar9 = 0;
|
|
lVar8 = 0;
|
|
}
|
|
else {
|
|
lVar9 = *(longlong *)(lVar8 + 0x38);
|
|
lVar8 = *(longlong *)(lVar8 + 0x38);
|
|
}
|
|
FUN_14004c020(&local_e8,
|
|
L"(first chance) to-peer client %d UDP punch lost##Reason:%d##CliInstCount=%d##RecentElapTime=%3.3f##DisconnedCount=%d##recv count=%d##last ok recv interval=%3.3f##Recurred:%d##LocalIP:%s##Remote peer behind NAT:%d##UDP kept time:%3.3f##Time diff since last RecvIssue:%3.3f##%s##Process=%s"
|
|
,*(undefined4 *)(param_1 + 0x56c),local_res18[0],
|
|
CONCAT44(uVar19,*(undefined4 *)(lVar8 + 0x2a8)),*(undefined8 *)(lVar9 + 0x180),
|
|
*(undefined4 *)(lVar10 + 0x288),*(undefined4 *)(param_1 + 0x100),
|
|
*(undefined8 *)(param_1 + 0x140),*(undefined4 *)(param_1 + 0x61c),puVar13,bVar15
|
|
,dVar16 - dVar18,dVar17 - dVar2,puVar12,puVar11);
|
|
if (((local_res20 != (undefined *)0x0) && (local_res20 != PTR_DAT_1403440a0)) &&
|
|
(local_res20 + -8 != (undefined *)0x0)) {
|
|
uVar4 = FUN_14016d8c0();
|
|
local_98 = uVar4;
|
|
FUN_14016db50(uVar4);
|
|
local_90 = 1;
|
|
piVar1 = (int *)(local_res20 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(local_res20 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar4);
|
|
}
|
|
local_res20 = PTR_DAT_1403440a0;
|
|
if (((local_d0 != (undefined *)0x0) && (local_d0 != PTR_DAT_1403440a0)) &&
|
|
(local_d0 + -8 != (undefined *)0x0)) {
|
|
uVar4 = FUN_14016d8c0();
|
|
local_b8 = uVar4;
|
|
FUN_14016db50(uVar4);
|
|
local_b0 = 1;
|
|
piVar1 = (int *)(local_d0 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(local_d0 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar4);
|
|
}
|
|
puVar11 = local_e8;
|
|
FUN_1401d51c0(*(undefined8 *)(param_1 + 0x670),iVar14,&DAT_1402b0a98,local_e8);
|
|
if (((puVar11 != (undefined *)0x0) && (puVar11 != PTR_DAT_1403440a0)) &&
|
|
(puVar11 + -8 != (undefined *)0x0)) {
|
|
uVar4 = FUN_14016d8c0();
|
|
local_a8 = uVar4;
|
|
FUN_14016db50(uVar4);
|
|
local_a0 = 1;
|
|
piVar1 = (int *)(puVar11 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(puVar11 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar4);
|
|
}
|
|
if (((local_e0 != (undefined *)0x0) && (local_e0 != PTR_DAT_1403440a0)) &&
|
|
(local_e0 + -8 != (undefined *)0x0)) {
|
|
uVar4 = FUN_14016d8c0();
|
|
local_88 = uVar4;
|
|
FUN_14016db50(uVar4);
|
|
local_80 = 1;
|
|
piVar1 = (int *)(local_e0 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(local_e0 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar4);
|
|
}
|
|
}
|
|
if (*(char *)(param_1 + 0x608) == '\0') {
|
|
*(undefined1 *)(param_1 + 0x618) = 1;
|
|
}
|
|
*(undefined1 *)(param_1 + 0x608) = 1;
|
|
if (*(longlong *)(param_1 + 0x640) != 0) {
|
|
*(undefined8 *)(*(longlong *)(param_1 + 0x640) + 0xd8) = 0;
|
|
}
|
|
if (param_2 != '\0') {
|
|
plVar7 = (longlong *)(*(longlong *)(param_1 + 0x670) + 0x1818);
|
|
(**(code **)(*plVar7 + 0x40))(plVar7,1,&DAT_14034c4b0,param_1 + 0x56c,local_res18);
|
|
}
|
|
local_c8 = 0;
|
|
FUN_1401d3e30(param_1 + 0x28,&local_c8);
|
|
if (local_res18[0] != 0x1d) {
|
|
FUN_1401e1850(*(undefined8 *)(param_1 + 0x670),*(undefined4 *)(param_1 + 0x56c));
|
|
}
|
|
if (*(int *)(param_1 + 0x61c) < DAT_140344cb8) {
|
|
*(int *)(param_1 + 0x61c) = *(int *)(param_1 + 0x61c) + 1;
|
|
dVar18 = (double)(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x670) + 0x70) + 0x1c0))()
|
|
;
|
|
*(double *)(param_1 + 0x620) = dVar18 + DAT_14034c8b0;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|