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

94 lines
3 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x14004eed0 FUN_14004eed0
* Pseudocode, not original source. */
void FUN_14004eed0(longlong param_1,uint *param_2,longlong param_3,TypeDescriptor *param_4)
{
int *piVar1;
short *psVar2;
longlong *plVar3;
int *piVar4;
short **ppsVar5;
longlong lVar6;
uint *puVar7;
undefined *puVar8;
undefined8 uVar9;
longlong lVar10;
ulonglong uVar11;
short *psVar12;
undefined *puVar13;
short *local_res10;
undefined *local_res18;
if ((char)param_2[0x1c0] != '\0') {
*(undefined1 *)(param_2 + 0x1c0) = 0;
lVar6 = param_1;
puVar7 = param_2;
if (*(longlong *)(param_2 + 0x1a) == 0) {
lVar10 = 0;
}
else {
lVar10 = *(longlong *)(param_2 + 0x16);
}
for (; lVar10 != 0; lVar10 = *(longlong *)(lVar10 + 0x10)) {
if (*(undefined8 **)(lVar10 + 8) == (undefined8 *)0x0) {
puVar7 = (uint *)0x0;
}
else {
puVar7 = (uint *)**(undefined8 **)(lVar10 + 8);
}
lVar6 = param_1;
FUN_14004c590(param_1,puVar7,param_3,param_4);
}
if (*(longlong *)(param_1 + 0x17f0) != 0) {
FUN_140030200(lVar6,puVar7,param_3,param_4);
local_res10 = (short *)PTR_DAT_140155010;
plVar3 = (longlong *)
(*(code *)**(undefined8 **)(*(longlong *)(param_2 + 0x1d2) + 0x128))
((undefined8 *)(*(longlong *)(param_2 + 0x1d2) + 0x128),&local_res18);
puVar13 = (undefined *)*plVar3;
if ((undefined *)*plVar3 == (undefined *)0x0) {
puVar13 = PTR_DAT_140155010;
}
uVar11 = (ulonglong)param_2[0x1be];
puVar8 = &DAT_1400faaa0;
ppsVar5 = &local_res10;
FUN_14001b7a0((longlong *)ppsVar5,
L"Client %d가 서버와의 UDP 홀펀칭 중도 해제: Client local Addr=%s",
uVar11,puVar13);
if (((local_res18 != (undefined *)0x0) && (local_res18 != PTR_DAT_140155010)) &&
(local_res18 + -8 != (undefined *)0x0)) {
piVar4 = (int *)FUN_140030200(ppsVar5,puVar8,uVar11,puVar13);
FUN_14002e6e0(piVar4);
piVar1 = (int *)(local_res18 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(local_res18 + -8);
}
FUN_14002e770((longlong)piVar4);
}
psVar2 = local_res10;
psVar12 = local_res10;
if (local_res10 == (short *)0x0) {
psVar12 = (short *)PTR_DAT_140155010;
}
uVar9 = 1;
lVar6 = *(longlong *)(param_1 + 0x17f0);
FUN_14008f2e0(lVar6,1,psVar12,puVar13);
if (((psVar2 != (short *)0x0) && (psVar2 != (short *)PTR_DAT_140155010)) &&
(psVar2 + -4 != (short *)0x0)) {
piVar4 = (int *)FUN_140030200(lVar6,uVar9,psVar12,puVar13);
FUN_14002e6e0(piVar4);
piVar1 = (int *)(psVar2 + -2);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_1400302f0(psVar2 + -4);
}
FUN_14002e770((longlong)piVar4);
}
}
}
return;
}