server-re/decomp/Agent_Release_x64/full/functions/0x1400b4730.c
2026-10-14 16:45:19 -04:00

361 lines
13 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400b4730 FUN_1400b4730
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1400b4730(longlong *param_1,uint *param_2,undefined8 param_3,undefined8 param_4)
{
int *piVar1;
undefined8 *puVar2;
longlong lVar3;
int iVar4;
undefined8 uVar5;
ulonglong uVar6;
longlong *plVar7;
int *piVar8;
undefined1 *puVar9;
longlong *plVar10;
undefined1 *_Memory;
longlong *plVar11;
undefined *puVar12;
undefined *puVar13;
longlong *plVar14;
bool bVar15;
undefined4 uVar16;
undefined4 uVar17;
undefined4 uVar18;
undefined4 uVar19;
undefined1 auStackY_628 [32];
undefined **local_5f8;
undefined4 local_5f0;
undefined2 local_5ec;
undefined **local_5e8;
uint local_5e0;
undefined2 local_5dc;
longlong *local_5d8;
uint local_5d0 [2];
undefined *local_5c8;
undefined **local_5c0;
uint local_5b8;
undefined2 local_5b4;
undefined **local_5b0;
undefined4 local_5a8;
undefined2 local_5a4;
undefined *local_5a0;
undefined **local_598;
uint local_590;
undefined2 local_58c;
undefined **local_588;
uint 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;
uint 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;
longlong *local_518;
undefined1 local_510;
undefined4 local_508;
undefined4 uStack_504;
undefined4 uStack_500;
undefined4 uStack_4fc;
int *local_4f8;
undefined1 local_4f0;
undefined8 local_4e8;
undefined4 local_4d8;
undefined4 uStack_4d4;
undefined4 uStack_4d0;
undefined4 uStack_4cc;
undefined8 local_4c8;
undefined8 uStack_4c0;
ulonglong local_4b8;
ulonglong uStack_4b0;
undefined4 local_4a8;
undefined4 uStack_4a4;
undefined4 uStack_4a0;
undefined4 uStack_49c;
ulonglong local_498;
ulonglong uStack_490;
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_1401555a0 ^ (ulonglong)auStackY_628;
local_5f8 = Proud::AddrPort::vftable;
plVar11 = (longlong *)0x0;
iVar4 = 0;
local_5f0 = 0;
local_5ec = 0;
uVar5 = FUN_140081090(param_2,local_5d0,param_3,param_4);
if ((char)uVar5 == '\0') {
if (((char)param_1[0x2f2] == '\0') && ((int)param_1[0xd9] == 0)) {
return;
}
local_488 = local_480;
FUN_14002a670((longlong *)&local_488,"RemotePeer.cpp",3);
FUN_140072eb0((longlong)param_1,1,L"Holepunch1 실패: %s(%d)",local_488);
puVar9 = local_480;
_Memory = local_488;
}
else {
local_4c8 = 0;
uStack_4c0 = 0;
uVar5 = FUN_140080600(param_2,&local_4c8,0x10);
if ((char)uVar5 == '\0') {
if (((char)param_1[0x2f2] == '\0') && ((int)param_1[0xd9] == 0)) {
return;
}
local_158 = local_150;
FUN_14002a670((longlong *)&local_158,"RemotePeer.cpp",3);
FUN_140072eb0((longlong)param_1,1,L"Holepunch1 실패: %s(%d)",local_158);
puVar9 = local_150;
_Memory = local_158;
}
else {
uVar16 = (undefined4)local_4c8;
uVar17 = local_4c8._4_4_;
uVar18 = (undefined4)uStack_4c0;
uVar19 = uStack_4c0._4_4_;
local_4a8 = (undefined4)local_4c8;
uStack_4a4 = local_4c8._4_4_;
uStack_4a0 = (undefined4)uStack_4c0;
uStack_49c = uStack_4c0._4_4_;
local_4b8 = 0;
uStack_4b0 = 0;
uVar5 = FUN_140080600(param_2,&local_4b8,0x10);
if ((char)uVar5 == '\0') {
if (((char)param_1[0x2f2] == '\0') && ((int)param_1[0xd9] == 0)) {
return;
}
local_378 = local_370;
FUN_14002a670((longlong *)&local_378,"RemotePeer.cpp",3);
FUN_140072eb0((longlong)param_1,1,L"Holepunch1 실패: %s(%d)",local_378);
puVar9 = local_370;
_Memory = local_378;
}
else {
local_498 = local_4b8;
uStack_490 = uStack_4b0;
uVar6 = FUN_140081030(param_2,(longlong)&local_5f8);
if ((char)uVar6 != '\0') {
bVar15 = local_498 < (ulonglong)param_1[0xda];
if ((local_498 != param_1[0xda]) ||
(bVar15 = uStack_490 < (ulonglong)param_1[0xdb], uStack_490 != param_1[0xdb])) {
iVar4 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
}
if (iVar4 != 0) {
return;
}
local_5e8 = Proud::AddrPort::vftable;
local_5e0 = param_2[0xe];
local_5dc = (undefined2)param_2[0xf];
uVar6 = (ulonglong)local_5d0[0];
plVar7 = FUN_140070860(param_1,(longlong *)&local_5d8,local_5d0[0]);
plVar14 = plVar11;
if ((undefined8 *)*plVar7 != (undefined8 *)0x0) {
plVar14 = *(longlong **)*plVar7;
}
if (local_5d8 != (longlong *)0x0) {
local_5d8[1] = local_5d8[1] + -1;
if (local_5d8[1] == 0) {
puVar2 = (undefined8 *)*local_5d8;
if (puVar2 != (undefined8 *)0x0) {
(**(code **)*puVar2)(puVar2,1);
}
FUN_1400302f0(local_5d8);
}
uVar16 = (undefined4)local_4c8;
uVar17 = local_4c8._4_4_;
uVar18 = (undefined4)uStack_4c0;
uVar19 = uStack_4c0._4_4_;
}
if (plVar14 == (longlong *)0x0) {
return;
}
if (*(char *)((longlong)plVar14 + 0x684) != '\0') {
return;
}
if ((longlong *)plVar14[5] == (longlong *)0x0) {
return;
}
if (*(longlong *)plVar14[5] == 0) {
return;
}
bVar15 = CONCAT44(uStack_4a4,local_4a8) < (ulonglong)plVar14[6];
if ((CONCAT44(uStack_4a4,local_4a8) == plVar14[6]) &&
(bVar15 = CONCAT44(uStack_49c,uStack_4a0) < (ulonglong)plVar14[7],
CONCAT44(uStack_49c,uStack_4a0) == plVar14[7])) {
iVar4 = 0;
}
else {
iVar4 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
}
if (iVar4 != 0) {
return;
}
if (((char)param_1[0x2f2] != '\0') || ((int)param_1[0xd9] != 0)) {
FUN_140033b30((longlong)&local_5e8,(longlong *)&local_5a0,uVar6,param_4);
plVar7 = FUN_140033b30((longlong)&local_5f8,(longlong *)&local_5c8,uVar6,param_4);
puVar13 = (undefined *)*plVar7;
if ((undefined *)*plVar7 == (undefined *)0x0) {
puVar13 = PTR_DAT_140155010;
}
puVar12 = &DAT_14010ca60;
FUN_140072eb0((longlong)param_1,1,L"P2P Holepunch 수신 OK. ABS=%s ABR=%s",puVar13);
if (((local_5c8 != (undefined *)0x0) && (local_5c8 != PTR_DAT_140155010)) &&
(local_5c8 + -8 != (undefined *)0x0)) {
param_1 = (longlong *)FUN_140030200(param_1,PTR_DAT_140155010,puVar12,puVar13);
local_518 = param_1;
FUN_14002e6e0((int *)param_1);
local_510 = 1;
piVar1 = (int *)(local_5c8 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(local_5c8 + -8);
}
FUN_14002e770((longlong)param_1);
}
local_5c8 = PTR_DAT_140155010;
if (((local_5a0 != (undefined *)0x0) && (local_5a0 != PTR_DAT_140155010)) &&
(local_5a0 + -8 != (undefined *)0x0)) {
piVar8 = (int *)FUN_140030200(param_1,PTR_DAT_140155010,puVar12,puVar13);
local_4f8 = piVar8;
FUN_14002e6e0(piVar8);
local_4f0 = 1;
piVar1 = (int *)(local_5a0 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(local_5a0 + -8);
}
FUN_14002e770((longlong)piVar8);
}
}
FUN_140033290((longlong)(plVar14 + 0xae));
uVar6 = FUN_140033290((longlong)(plVar14 + 0xb0));
if ((char)uVar6 != '\0') {
if (((longlong *)plVar14[3] == (longlong *)0x0) ||
(lVar3 = *(longlong *)plVar14[3], plVar7 = (longlong *)(lVar3 + -0x40), lVar3 == 0))
{
plVar7 = plVar11;
}
uVar6 = FUN_140033290((longlong)(plVar7 + 0x25));
if ((char)uVar6 != '\0') {
plVar7 = (longlong *)plVar14[3];
if ((plVar7 == (longlong *)0x0) ||
(plVar10 = (longlong *)(*plVar7 + -0x40), *plVar7 == 0)) {
plVar10 = plVar11;
}
if ((int)plVar10[0x28] == (int)plVar14[0xaf]) {
plVar10 = plVar11;
if ((plVar7 != (longlong *)0x0) && (*plVar7 != 0)) {
plVar10 = (longlong *)(*plVar7 + -0x40);
}
if ((((char)plVar10[0x26] == (char)plVar14[0xb1]) &&
(*(char *)((longlong)plVar10 + 0x131) == *(char *)((longlong)plVar14 + 0x589)))
&& (*(char *)((longlong)plVar10 + 0x132) == *(char *)((longlong)plVar14 + 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)plVar14[0xb1];
local_55c = *(undefined2 *)((longlong)plVar14 + 0x58c);
plVar7 = plVar11;
if ((undefined8 *)plVar14[5] != (undefined8 *)0x0) {
plVar7 = *(longlong **)plVar14[5];
}
local_4d8 = uVar16;
uStack_4d4 = uVar17;
uStack_4d0 = uVar18;
uStack_4cc = uVar19;
FUN_1400b3dd0(plVar7,(longlong)&local_568,(undefined8 *)&local_4d8,
(longlong)&local_558,(longlong)&local_598);
}
}
}
}
uVar6 = FUN_140033290((longlong)(plVar14 + 0xae));
if ((char)uVar6 != '\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)plVar14[0xaf];
local_5a4 = *(undefined2 *)((longlong)plVar14 + 0x57c);
plVar7 = plVar11;
if ((undefined8 *)plVar14[5] != (undefined8 *)0x0) {
plVar7 = *(longlong **)plVar14[5];
}
local_528 = uVar16;
uStack_524 = uVar17;
uStack_520 = uVar18;
uStack_51c = uVar19;
FUN_1400b3dd0(plVar7,(longlong)&local_5b0,(undefined8 *)&local_528,(longlong)&local_578,
(longlong)&local_588);
}
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 = param_2[0xe];
local_53c = (undefined2)param_2[0xf];
if ((undefined8 *)plVar14[5] != (undefined8 *)0x0) {
plVar11 = *(longlong **)plVar14[5];
}
local_508 = uVar16;
uStack_504 = uVar17;
uStack_500 = uVar18;
uStack_4fc = uVar19;
FUN_1400b3dd0(plVar11,(longlong)&local_548,(undefined8 *)&local_508,(longlong)&local_538,
(longlong)&local_5c0);
return;
}
if (((char)param_1[0x2f2] == '\0') && ((int)param_1[0xd9] == 0)) {
return;
}
local_268 = local_260;
FUN_14002a670((longlong *)&local_268,"RemotePeer.cpp",3);
FUN_140072eb0((longlong)param_1,1,L"Holepunch1 실패: %s(%d)",local_268);
puVar9 = local_260;
_Memory = local_268;
}
}
}
if (_Memory != puVar9) {
free(_Memory);
}
return;
}