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

376 lines
13 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401fb780 FUN_1401fb780
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401fb780(longlong param_1,longlong param_2)
{
int *piVar1;
undefined8 *puVar2;
char cVar3;
int iVar4;
longlong *plVar5;
longlong *plVar6;
undefined8 uVar7;
undefined1 *puVar8;
longlong lVar9;
longlong lVar10;
undefined1 *_Memory;
longlong lVar11;
undefined *puVar12;
longlong lVar13;
bool bVar14;
undefined4 uVar15;
undefined4 uVar16;
undefined4 uVar17;
undefined4 uVar18;
undefined1 auStack_628 [32];
undefined ***local_608;
undefined **local_5f8;
undefined4 local_5f0;
undefined2 local_5ec;
undefined **local_5e8;
undefined4 local_5e0;
undefined2 local_5dc;
longlong *local_5d8;
undefined4 local_5d0 [2];
undefined *local_5c8;
undefined **local_5c0;
undefined4 local_5b8;
undefined2 local_5b4;
undefined **local_5b0;
undefined4 local_5a8;
undefined2 local_5a4;
undefined *local_5a0;
undefined **local_598;
undefined4 local_590;
undefined2 local_58c;
undefined **local_588;
undefined4 local_580;
undefined2 local_57c;
undefined **local_578;
undefined4 local_570;
undefined2 local_56c;
undefined **local_568;
undefined4 local_560;
undefined2 local_55c;
undefined **local_558;
undefined4 local_550;
undefined2 local_54c;
undefined **local_548;
undefined4 local_540;
undefined2 local_53c;
undefined **local_538;
undefined4 local_530;
undefined2 local_52c;
undefined4 local_528;
undefined4 uStack_524;
undefined4 uStack_520;
undefined4 uStack_51c;
undefined8 local_518;
undefined1 local_510;
undefined4 local_508;
undefined4 uStack_504;
undefined4 uStack_500;
undefined4 uStack_4fc;
undefined8 local_4f8;
undefined1 local_4f0;
undefined8 local_4e8;
undefined4 local_4d8;
undefined4 uStack_4d4;
undefined4 uStack_4d0;
undefined4 uStack_4cc;
undefined4 local_4c8;
undefined4 uStack_4c4;
undefined4 uStack_4c0;
undefined4 uStack_4bc;
undefined4 local_4b8;
undefined4 uStack_4b4;
undefined4 uStack_4b0;
undefined4 uStack_4ac;
undefined4 local_4a8;
undefined4 uStack_4a4;
undefined4 uStack_4a0;
undefined4 uStack_49c;
undefined4 local_498;
undefined4 uStack_494;
undefined4 uStack_490;
undefined4 uStack_48c;
undefined1 *local_488;
undefined1 local_480 [264];
undefined1 *local_378;
undefined1 local_370 [264];
undefined1 *local_268;
undefined1 local_260 [264];
undefined1 *local_158;
undefined1 local_150 [264];
ulonglong local_48;
local_4e8 = 0xfffffffffffffffe;
local_48 = DAT_1403463c0 ^ (ulonglong)auStack_628;
local_5f8 = Proud::AddrPort::vftable;
lVar11 = 0;
iVar4 = 0;
local_5f0 = 0;
local_5ec = 0;
cVar3 = FUN_14016be00(param_2,local_5d0);
if (cVar3 == '\0') {
if ((*(char *)(param_1 + 0x1790) == '\0') && (*(int *)(param_1 + 0x6c8) == 0)) {
return;
}
local_488 = local_480;
FUN_14015b060(&local_488,"RemotePeer.cpp",3);
local_608 = (undefined ***)CONCAT44(local_608._4_4_,0x9b);
FUN_1401d4c70(param_1,1,&DAT_140294948,local_488);
puVar8 = local_480;
_Memory = local_488;
}
else {
local_4c8 = 0;
uStack_4c4 = 0;
uStack_4c0 = 0;
uStack_4bc = 0;
cVar3 = FUN_14016b370(param_2,&local_4c8,0x10);
uVar18 = uStack_4bc;
uVar17 = uStack_4c0;
uVar16 = uStack_4c4;
uVar15 = local_4c8;
if (cVar3 == '\0') {
if ((*(char *)(param_1 + 0x1790) == '\0') && (*(int *)(param_1 + 0x6c8) == 0)) {
return;
}
local_158 = local_150;
FUN_14015b060(&local_158,"RemotePeer.cpp",3);
local_608 = (undefined ***)CONCAT44(local_608._4_4_,0xa0);
FUN_1401d4c70(param_1,1,&DAT_140294948,local_158);
puVar8 = local_150;
_Memory = local_158;
}
else {
local_4a8 = local_4c8;
uStack_4a4 = uStack_4c4;
uStack_4a0 = uStack_4c0;
uStack_49c = uStack_4bc;
local_4b8 = 0;
uStack_4b4 = 0;
uStack_4b0 = 0;
uStack_4ac = 0;
cVar3 = FUN_14016b370(param_2,&local_4b8,0x10);
if (cVar3 == '\0') {
if ((*(char *)(param_1 + 0x1790) == '\0') && (*(int *)(param_1 + 0x6c8) == 0)) {
return;
}
local_378 = local_370;
FUN_14015b060(&local_378,"RemotePeer.cpp",3);
local_608 = (undefined ***)CONCAT44(local_608._4_4_,0xa5);
FUN_1401d4c70(param_1,1,&DAT_140294948,local_378);
puVar8 = local_370;
_Memory = local_378;
}
else {
local_498 = local_4b8;
uStack_494 = uStack_4b4;
uStack_490 = uStack_4b0;
uStack_48c = uStack_4ac;
cVar3 = FUN_14016bda0(param_2,&local_5f8);
if (cVar3 != '\0') {
bVar14 = CONCAT44(uStack_494,local_498) < *(ulonglong *)(param_1 + 0x6d0);
if ((CONCAT44(uStack_494,local_498) != *(ulonglong *)(param_1 + 0x6d0)) ||
(bVar14 = CONCAT44(uStack_48c,uStack_490) < *(ulonglong *)(param_1 + 0x6d8),
CONCAT44(uStack_48c,uStack_490) != *(ulonglong *)(param_1 + 0x6d8))) {
iVar4 = (1 - (uint)bVar14) - (uint)(bVar14 != 0);
}
if (iVar4 != 0) {
return;
}
local_5e8 = Proud::AddrPort::vftable;
local_5e0 = *(undefined4 *)(param_2 + 0x38);
local_5dc = *(undefined2 *)(param_2 + 0x3c);
plVar5 = (longlong *)FUN_1401d2620(param_1,&local_5d8,local_5d0[0]);
lVar13 = lVar11;
if ((longlong *)*plVar5 != (longlong *)0x0) {
lVar13 = *(longlong *)*plVar5;
}
if ((local_5d8 != (longlong *)0x0) &&
(local_5d8[1] = local_5d8[1] + -1, uVar15 = local_4c8, uVar16 = uStack_4c4,
uVar17 = uStack_4c0, uVar18 = uStack_4bc, local_5d8[1] == 0)) {
puVar2 = (undefined8 *)*local_5d8;
if (puVar2 != (undefined8 *)0x0) {
(**(code **)*puVar2)(puVar2,1);
}
FUN_14016d970(local_5d8);
uVar15 = local_4c8;
uVar16 = uStack_4c4;
uVar17 = uStack_4c0;
uVar18 = uStack_4bc;
}
if (lVar13 == 0) {
return;
}
if (*(char *)(lVar13 + 0x684) != '\0') {
return;
}
if (*(longlong **)(lVar13 + 0x28) == (longlong *)0x0) {
return;
}
if (**(longlong **)(lVar13 + 0x28) == 0) {
return;
}
bVar14 = CONCAT44(uStack_4a4,local_4a8) < *(ulonglong *)(lVar13 + 0x30);
if ((CONCAT44(uStack_4a4,local_4a8) == *(ulonglong *)(lVar13 + 0x30)) &&
(bVar14 = CONCAT44(uStack_49c,uStack_4a0) < *(ulonglong *)(lVar13 + 0x38),
CONCAT44(uStack_49c,uStack_4a0) == *(ulonglong *)(lVar13 + 0x38))) {
iVar4 = 0;
}
else {
iVar4 = (1 - (uint)bVar14) - (uint)(bVar14 != 0);
}
if (iVar4 != 0) {
return;
}
if ((*(char *)(param_1 + 0x1790) != '\0') || (*(int *)(param_1 + 0x6c8) != 0)) {
plVar5 = (longlong *)FUN_1401705d0(&local_5e8,&local_5a0);
plVar6 = (longlong *)FUN_1401705d0(&local_5f8,&local_5c8);
local_608 = (undefined ***)*plVar5;
if ((undefined ***)*plVar5 == (undefined ***)0x0) {
local_608 = (undefined ***)PTR_DAT_1403440a0;
}
puVar12 = (undefined *)*plVar6;
if ((undefined *)*plVar6 == (undefined *)0x0) {
puVar12 = PTR_DAT_1403440a0;
}
FUN_1401d4c70(param_1,1,&DAT_140294900,puVar12);
if (((local_5c8 != (undefined *)0x0) && (local_5c8 != PTR_DAT_1403440a0)) &&
(local_5c8 + -8 != (undefined *)0x0)) {
uVar7 = FUN_14016d8c0();
local_518 = uVar7;
FUN_14016db50(uVar7);
local_510 = 1;
piVar1 = (int *)(local_5c8 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(local_5c8 + -8);
}
FUN_14016dbe0(uVar7);
}
local_5c8 = PTR_DAT_1403440a0;
if (((local_5a0 != (undefined *)0x0) && (local_5a0 != PTR_DAT_1403440a0)) &&
(local_5a0 + -8 != (undefined *)0x0)) {
uVar7 = FUN_14016d8c0();
local_4f8 = uVar7;
FUN_14016db50(uVar7);
local_4f0 = 1;
piVar1 = (int *)(local_5a0 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(local_5a0 + -8);
}
FUN_14016dbe0(uVar7);
}
}
FUN_14016f870(lVar13 + 0x570);
cVar3 = FUN_14016f870(lVar13 + 0x580);
if (cVar3 != '\0') {
if ((*(longlong **)(lVar13 + 0x18) == (longlong *)0x0) ||
(lVar10 = **(longlong **)(lVar13 + 0x18), lVar9 = lVar10 + -0x40, lVar10 == 0)) {
lVar9 = lVar11;
}
cVar3 = FUN_14016f870(lVar9 + 0x128);
if (cVar3 != '\0') {
plVar5 = *(longlong **)(lVar13 + 0x18);
if ((plVar5 == (longlong *)0x0) || (lVar10 = *plVar5 + -0x40, *plVar5 == 0)) {
lVar10 = lVar11;
}
if (*(int *)(lVar10 + 0x140) == *(int *)(lVar13 + 0x578)) {
lVar10 = lVar11;
if ((plVar5 != (longlong *)0x0) && (*plVar5 != 0)) {
lVar10 = *plVar5 + -0x40;
}
if (((*(char *)(lVar10 + 0x130) == *(char *)(lVar13 + 0x588)) &&
(*(char *)(lVar10 + 0x131) == *(char *)(lVar13 + 0x589))) &&
(*(char *)(lVar10 + 0x132) == *(char *)(lVar13 + 0x58a))) {
local_598 = Proud::AddrPort::vftable;
local_590 = local_5e0;
local_58c = local_5dc;
local_558 = Proud::AddrPort::vftable;
local_550 = local_5f0;
local_54c = local_5ec;
local_568 = Proud::AddrPort::vftable;
local_560 = *(undefined4 *)(lVar13 + 0x588);
local_55c = *(undefined2 *)(lVar13 + 0x58c);
lVar10 = lVar11;
if (*(longlong **)(lVar13 + 0x28) != (longlong *)0x0) {
lVar10 = **(longlong **)(lVar13 + 0x28);
}
local_608 = &local_598;
local_4d8 = uVar15;
uStack_4d4 = uVar16;
uStack_4d0 = uVar17;
uStack_4cc = uVar18;
FUN_1401fae20(lVar10,&local_568,&local_4d8,&local_558);
}
}
}
}
cVar3 = FUN_14016f870(lVar13 + 0x570);
if (cVar3 != '\0') {
local_588 = Proud::AddrPort::vftable;
local_580 = local_5e0;
local_57c = local_5dc;
local_578 = Proud::AddrPort::vftable;
local_570 = local_5f0;
local_56c = local_5ec;
local_5b0 = Proud::AddrPort::vftable;
local_5a8 = *(undefined4 *)(lVar13 + 0x578);
local_5a4 = *(undefined2 *)(lVar13 + 0x57c);
lVar10 = lVar11;
if (*(longlong **)(lVar13 + 0x28) != (longlong *)0x0) {
lVar10 = **(longlong **)(lVar13 + 0x28);
}
local_608 = &local_588;
local_528 = uVar15;
uStack_524 = uVar16;
uStack_520 = uVar17;
uStack_51c = uVar18;
FUN_1401fae20(lVar10,&local_5b0,&local_528,&local_578);
}
local_5c0 = Proud::AddrPort::vftable;
local_5b8 = local_5e0;
local_5b4 = local_5dc;
local_538 = Proud::AddrPort::vftable;
local_530 = local_5f0;
local_52c = local_5ec;
local_548 = Proud::AddrPort::vftable;
local_540 = *(undefined4 *)(param_2 + 0x38);
local_53c = *(undefined2 *)(param_2 + 0x3c);
if (*(longlong **)(lVar13 + 0x28) != (longlong *)0x0) {
lVar11 = **(longlong **)(lVar13 + 0x28);
}
local_608 = &local_5c0;
local_508 = uVar15;
uStack_504 = uVar16;
uStack_500 = uVar17;
uStack_4fc = uVar18;
FUN_1401fae20(lVar11,&local_548,&local_508,&local_538);
return;
}
if ((*(char *)(param_1 + 0x1790) == '\0') && (*(int *)(param_1 + 0x6c8) == 0)) {
return;
}
local_268 = local_260;
FUN_14015b060(&local_268,"RemotePeer.cpp",3);
local_608 = (undefined ***)CONCAT44(local_608._4_4_,0xaa);
FUN_1401d4c70(param_1,1,&DAT_140294948,local_268);
puVar8 = local_260;
_Memory = local_268;
}
}
}
if (_Memory != puVar8) {
free(_Memory);
}
return;
}