212 lines
7.4 KiB
C
212 lines
7.4 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14005e510 FUN_14005e510
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8
|
|
FUN_14005e510(longlong param_1,undefined8 param_2,undefined8 param_3,uint *param_4,uint *param_5,
|
|
undefined8 *param_6,undefined8 *param_7,undefined8 *param_8,undefined8 *param_9)
|
|
|
|
{
|
|
int *piVar1;
|
|
short *psVar2;
|
|
longlong *plVar3;
|
|
short **ppsVar4;
|
|
int *piVar5;
|
|
longlong lVar6;
|
|
ulonglong uVar7;
|
|
undefined *puVar8;
|
|
short *psVar9;
|
|
uint *puVar10;
|
|
ulonglong uVar11;
|
|
undefined8 uVar12;
|
|
longlong *local_res8;
|
|
undefined8 *local_108;
|
|
short *local_100;
|
|
undefined *local_f8;
|
|
undefined *local_f0;
|
|
undefined *local_e8;
|
|
undefined *local_e0;
|
|
undefined **local_d8;
|
|
undefined4 local_d0;
|
|
undefined2 local_cc;
|
|
undefined **local_c8;
|
|
undefined4 local_c0;
|
|
undefined2 local_bc;
|
|
undefined **local_b8;
|
|
undefined4 local_b0;
|
|
undefined2 local_ac;
|
|
undefined **local_a8;
|
|
undefined4 local_a0;
|
|
undefined2 local_9c;
|
|
short **local_98;
|
|
undefined1 local_90;
|
|
short **local_88;
|
|
undefined1 local_80;
|
|
int *local_78;
|
|
undefined1 local_70;
|
|
short **local_68;
|
|
undefined1 local_60;
|
|
int *local_58;
|
|
undefined1 local_50;
|
|
int *local_48;
|
|
undefined1 local_40;
|
|
undefined8 local_38;
|
|
|
|
local_38 = 0xfffffffffffffffe;
|
|
local_48 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))();
|
|
FUN_14003d040(local_48);
|
|
local_40 = 1;
|
|
if (DAT_14017614f != '\0') {
|
|
(**(code **)(**(longlong **)(param_1 + 0x20) + 200))
|
|
(*(longlong **)(param_1 + 0x20),
|
|
L"Proud::CNetServerImpl::C2SStub::NotifyP2PHolepunchSuccess");
|
|
}
|
|
local_res8 = (longlong *)0x0;
|
|
plVar3 = FUN_14005d550(*(longlong *)(param_1 + 0x20) + 0x2d8,(longlong *)&local_108,*param_4,
|
|
*param_5);
|
|
if (*plVar3 != 0) {
|
|
*(longlong *)(*plVar3 + 8) = *(longlong *)(*plVar3 + 8) + 1;
|
|
local_res8 = (longlong *)*plVar3;
|
|
}
|
|
if ((local_108 != (undefined8 *)0x0) && (local_108[1] = local_108[1] + -1, local_108[1] == 0)) {
|
|
FUN_14004e450(local_108);
|
|
}
|
|
if (((local_res8 != (longlong *)0x0) && (lVar6 = *local_res8, lVar6 != 0)) &&
|
|
(*(char *)(lVar6 + 8) == '\x01')) {
|
|
if (*(char *)(lVar6 + 8) != '\0') {
|
|
*(undefined1 *)(lVar6 + 8) = 0;
|
|
}
|
|
lVar6 = *local_res8;
|
|
uVar12 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x20) + 0x118) + 8))();
|
|
*(undefined8 *)(lVar6 + 0x198) = uVar12;
|
|
local_b8 = Proud::AddrPort::vftable;
|
|
local_b0 = *(undefined4 *)(param_9 + 1);
|
|
local_ac = *(undefined2 *)((longlong)param_9 + 0xc);
|
|
local_d8 = Proud::AddrPort::vftable;
|
|
local_d0 = *(undefined4 *)(param_6 + 1);
|
|
local_cc = *(undefined2 *)((longlong)param_6 + 0xc);
|
|
FUN_14004a550(*local_res8,*param_4,(longlong)&local_d8,(longlong)&local_b8);
|
|
local_c8 = Proud::AddrPort::vftable;
|
|
local_c0 = *(undefined4 *)(param_7 + 1);
|
|
local_bc = *(undefined2 *)((longlong)param_7 + 0xc);
|
|
local_a8 = Proud::AddrPort::vftable;
|
|
local_a0 = *(undefined4 *)(param_8 + 1);
|
|
local_9c = *(undefined2 *)((longlong)param_8 + 0xc);
|
|
FUN_14004a550(*local_res8,*param_5,(longlong)&local_a8,(longlong)&local_c8);
|
|
plVar3 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8);
|
|
(**(code **)(*plVar3 + 0x90))
|
|
(plVar3,*param_4,&DAT_140177f90,param_4,param_5,param_6,param_7,param_8,param_9);
|
|
plVar3 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8);
|
|
puVar8 = &DAT_140177f90;
|
|
uVar7 = (ulonglong)*param_5;
|
|
puVar10 = param_4;
|
|
(**(code **)(*plVar3 + 0x90))();
|
|
if (*(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0) != 0) {
|
|
FUN_14003e7c0(plVar3,uVar7,puVar8,puVar10);
|
|
local_100 = (short *)PTR_DAT_14016f010;
|
|
(**(code **)*param_9)(param_9,&local_e0);
|
|
(**(code **)*param_8)(param_8,&local_f0);
|
|
(**(code **)*param_7)(param_7,&local_e8);
|
|
(**(code **)*param_6)(param_6,&local_f8);
|
|
uVar11 = (ulonglong)*param_5;
|
|
uVar7 = (ulonglong)*param_4;
|
|
ppsVar4 = &local_100;
|
|
FUN_140029b80((longlong *)ppsVar4,
|
|
L"Client %d-Client %d간 P2P UDP 홀펀칭 최종 단계 성공: ABSendAddr=%s ABRecvAddr=%s BASendAddr=%s BARecvAddr=%s"
|
|
,uVar7,uVar11);
|
|
if (((local_f8 != (undefined *)0x0) && (local_f8 != PTR_DAT_14016f010)) &&
|
|
(local_f8 + -8 != (undefined *)0x0)) {
|
|
ppsVar4 = (short **)FUN_14003e7c0(ppsVar4,PTR_DAT_14016f010,uVar7,uVar11);
|
|
local_98 = ppsVar4;
|
|
FUN_14003d040((int *)ppsVar4);
|
|
local_90 = 1;
|
|
piVar1 = (int *)(local_f8 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14003e8b0(local_f8 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)ppsVar4);
|
|
local_90 = 0;
|
|
}
|
|
local_f8 = PTR_DAT_14016f010;
|
|
if (((local_e8 != (undefined *)0x0) && (local_e8 != PTR_DAT_14016f010)) &&
|
|
(local_e8 + -8 != (undefined *)0x0)) {
|
|
ppsVar4 = (short **)FUN_14003e7c0(ppsVar4,PTR_DAT_14016f010,uVar7,uVar11);
|
|
local_68 = ppsVar4;
|
|
FUN_14003d040((int *)ppsVar4);
|
|
local_60 = 1;
|
|
piVar1 = (int *)(local_e8 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14003e8b0(local_e8 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)ppsVar4);
|
|
local_60 = 0;
|
|
}
|
|
local_e8 = PTR_DAT_14016f010;
|
|
if (((local_f0 != (undefined *)0x0) && (local_f0 != PTR_DAT_14016f010)) &&
|
|
(local_f0 + -8 != (undefined *)0x0)) {
|
|
ppsVar4 = (short **)FUN_14003e7c0(ppsVar4,PTR_DAT_14016f010,uVar7,uVar11);
|
|
local_88 = ppsVar4;
|
|
FUN_14003d040((int *)ppsVar4);
|
|
local_80 = 1;
|
|
piVar1 = (int *)(local_f0 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14003e8b0(local_f0 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)ppsVar4);
|
|
local_80 = 0;
|
|
}
|
|
local_f0 = PTR_DAT_14016f010;
|
|
if (((local_e0 != (undefined *)0x0) && (local_e0 != PTR_DAT_14016f010)) &&
|
|
(local_e0 + -8 != (undefined *)0x0)) {
|
|
piVar5 = (int *)FUN_14003e7c0(ppsVar4,PTR_DAT_14016f010,uVar7,uVar11);
|
|
local_78 = piVar5;
|
|
FUN_14003d040(piVar5);
|
|
local_70 = 1;
|
|
piVar1 = (int *)(local_e0 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14003e8b0(local_e0 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar5);
|
|
local_70 = 0;
|
|
}
|
|
psVar2 = local_100;
|
|
psVar9 = local_100;
|
|
if (local_100 == (short *)0x0) {
|
|
psVar9 = (short *)PTR_DAT_14016f010;
|
|
}
|
|
uVar12 = 1;
|
|
lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0);
|
|
local_e0 = PTR_DAT_14016f010;
|
|
FUN_1400843d0(lVar6,1,psVar9,uVar11);
|
|
if (((psVar2 != (short *)0x0) && (psVar2 != (short *)PTR_DAT_14016f010)) &&
|
|
(psVar2 + -4 != (short *)0x0)) {
|
|
piVar5 = (int *)FUN_14003e7c0(lVar6,uVar12,psVar9,uVar11);
|
|
local_58 = piVar5;
|
|
FUN_14003d040(piVar5);
|
|
local_50 = 1;
|
|
piVar1 = (int *)(psVar2 + -2);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14003e8b0(psVar2 + -4);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar5);
|
|
local_50 = 0;
|
|
}
|
|
local_100 = (short *)PTR_DAT_14016f010;
|
|
}
|
|
}
|
|
if (local_res8 != (longlong *)0x0) {
|
|
plVar3 = local_res8 + 1;
|
|
*plVar3 = *plVar3 + -1;
|
|
if (*plVar3 == 0) {
|
|
FUN_14004e450(local_res8);
|
|
}
|
|
}
|
|
uVar12 = FUN_14003d0d0((longlong)local_48);
|
|
return CONCAT71((int7)((ulonglong)uVar12 >> 8),1);
|
|
}
|
|
|