94 lines
3 KiB
C
94 lines
3 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14008b380 FUN_14008b380
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_14008b380(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_1400887b0(param_1,puVar7,param_3,param_4);
|
|
}
|
|
if (*(longlong *)(param_1 + 0x17f0) != 0) {
|
|
FUN_14006cb70(lVar6,puVar7,param_3,param_4);
|
|
local_res10 = (short *)PTR_DAT_1401ac010;
|
|
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_1401ac010;
|
|
}
|
|
uVar11 = (ulonglong)param_2[0x1be];
|
|
puVar8 = &DAT_1401388b0;
|
|
ppsVar5 = &local_res10;
|
|
FUN_140053d20((longlong *)ppsVar5,
|
|
L"Client %d가 서버와의 UDP 홀펀칭 중도 해제: Client local Addr=%s",
|
|
uVar11,puVar13);
|
|
if (((local_res18 != (undefined *)0x0) && (local_res18 != PTR_DAT_1401ac010)) &&
|
|
(local_res18 + -8 != (undefined *)0x0)) {
|
|
piVar4 = (int *)FUN_14006cb70(ppsVar5,puVar8,uVar11,puVar13);
|
|
FUN_14006b350(piVar4);
|
|
piVar1 = (int *)(local_res18 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14006cc60(local_res18 + -8);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar4);
|
|
}
|
|
psVar2 = local_res10;
|
|
psVar12 = local_res10;
|
|
if (local_res10 == (short *)0x0) {
|
|
psVar12 = (short *)PTR_DAT_1401ac010;
|
|
}
|
|
uVar9 = 1;
|
|
lVar6 = *(longlong *)(param_1 + 0x17f0);
|
|
FUN_1400cb700(lVar6,1,psVar12,puVar13);
|
|
if (((psVar2 != (short *)0x0) && (psVar2 != (short *)PTR_DAT_1401ac010)) &&
|
|
(psVar2 + -4 != (short *)0x0)) {
|
|
piVar4 = (int *)FUN_14006cb70(lVar6,uVar9,psVar12,puVar13);
|
|
FUN_14006b350(piVar4);
|
|
piVar1 = (int *)(psVar2 + -2);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14006cc60(psVar2 + -4);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar4);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|