/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14007b9f0 FUN_14007b9f0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_14007b9f0(longlong param_1,uint *param_2,longlong param_3,TypeDescriptor *param_4) { undefined **ppuVar1; undefined **ppuVar2; int iVar3; undefined8 uVar4; ulonglong uVar5; int *piVar6; int *piVar7; longlong lVar8; longlong *plVar9; longlong *plVar10; int **ppiVar11; SIZE_T SVar12; undefined ***pppuVar13; int *piVar14; undefined *puVar15; bool bVar16; undefined1 auStack_da8 [32]; undefined *local_d88; undefined **local_d78; undefined4 local_d70; undefined2 local_d6c; undefined **local_d68; undefined4 local_d60; undefined2 local_d5c; int **local_d58; undefined1 local_d50; undefined *local_d48; int *local_d40; undefined1 local_d38; int local_d30 [2]; undefined *local_d28; longlong local_d20; int local_d14; undefined8 local_d08; int *local_d00; undefined1 local_cf8; undefined **local_ce8; undefined8 uStack_ce0; undefined1 local_cd8 [3216]; ulonglong local_48; local_d08 = 0xfffffffffffffffe; local_48 = DAT_14016f5a0 ^ (ulonglong)auStack_da8; FUN_140079c10(); local_d68 = Proud::AddrPort::vftable; local_d60 = 0; local_d5c = 0; local_d78 = Proud::AddrPort::vftable; local_d70 = 0; local_d6c = 0; local_ce8 = (undefined **)0x0; uStack_ce0 = 0; SVar12 = 0x10; uVar4 = FUN_140074ee0(param_2,&local_ce8,0x10); if ((char)uVar4 == '\0') { return; } uVar5 = FUN_140075910(param_2,(longlong)&local_d68); if ((char)uVar5 != '\0') { uVar5 = FUN_140075910(param_2,(longlong)&local_d78); if ((char)uVar5 == '\0') { return; } piVar6 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); local_d00 = piVar6; FUN_14003d040(piVar6); local_cf8 = 1; if (DAT_14017614f != '\0') { SVar12 = **(SIZE_T **)(param_1 + 0x148); (**(code **)(SVar12 + 200)) (*(SIZE_T **)(param_1 + 0x148), L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_NotifyHolepunchSuccess"); } bVar16 = *(undefined ***)(param_3 + 0x728) < local_ce8; if ((*(undefined ***)(param_3 + 0x728) == local_ce8) && (bVar16 = *(ulonglong *)(param_3 + 0x730) < uStack_ce0, *(ulonglong *)(param_3 + 0x730) == uStack_ce0)) { iVar3 = 0; } else { iVar3 = (1 - (uint)bVar16) - (uint)(bVar16 != 0); } if ((iVar3 == 0) && (*(char *)(param_3 + 0x700) == '\0')) { *(undefined1 *)(param_3 + 0x700) = 1; uVar4 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))(); *(undefined8 *)(param_3 + 0x198) = uVar4; uVar4 = (**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))(); *(undefined8 *)(param_3 + 0x1b8) = uVar4; local_ce8 = Proud::AddrPort::vftable; uStack_ce0._0_6_ = CONCAT24(local_d6c,local_d70); FUN_140092c10(param_3 + 0x700,(longlong)&local_ce8); *(undefined4 *)(param_3 + 0x720) = local_d60; *(undefined2 *)(param_3 + 0x724) = local_d5c; lVar8 = param_3; FUN_14005a220(*(longlong *)(param_1 + 0x148),param_3,SVar12,param_4); FUN_140074fb0(local_d30); FUN_140074a40((longlong)local_d30,lVar8,SVar12,param_4); FUN_140075110(local_d30,0x800,SVar12,param_4); uVar4 = 0; FUN_140075110(local_d30,0,SVar12,param_4); FUN_140029d80((longlong)local_d30,CONCAT71((int7)((ulonglong)uVar4 >> 8),0xf),SVar12,param_4); local_ce8 = *(undefined ***)(param_3 + 0x728); uStack_ce0 = *(undefined8 *)(param_3 + 0x730); FUN_140051cf0((longlong)local_d30,&local_ce8,SVar12,param_4); piVar7 = (int *)(**(code **)(*(longlong *)(param_3 + 0x108) + 0x10))(); local_d40 = piVar7; FUN_14003d040(piVar7); local_d38 = 1; lVar8 = FUN_14004ec50((longlong)local_cd8,(longlong)local_d30,SVar12); local_ce8 = (undefined **)0x0; uStack_ce0 = CONCAT71(uStack_ce0._1_7_,1); pppuVar13 = &local_ce8; FUN_140091090(*(char **)(param_3 + 0x748),lVar8,(SIZE_T *)pppuVar13,param_4); FUN_14004db20((longlong)local_cd8,lVar8,pppuVar13,param_4); FUN_14003d0d0((longlong)piVar7); if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0) { FUN_14003e7c0(piVar7,lVar8,pppuVar13,param_4); local_d40 = (int *)PTR_DAT_14016f010; plVar9 = FUN_1400420f0((longlong)&local_d78,(longlong *)&local_ce8,pppuVar13,param_4); plVar10 = FUN_1400420f0((longlong)&local_d68,(longlong *)&local_d48,pppuVar13,param_4); local_d88 = (undefined *)*plVar9; if ((undefined *)*plVar9 == (undefined *)0x0) { local_d88 = PTR_DAT_14016f010; } puVar15 = (undefined *)*plVar10; if ((undefined *)*plVar10 == (undefined *)0x0) { puVar15 = PTR_DAT_14016f010; } uVar5 = (ulonglong)*(uint *)(param_3 + 0x6f8); ppiVar11 = &local_d40; FUN_140029b80((longlong *)ppiVar11, L"Client %d가 서버와의 UDP 홀펀칭 성공: Client local Addr=%s,Client addr at server=%s" ,uVar5,puVar15); if (((local_d48 != (undefined *)0x0) && (local_d48 != PTR_DAT_14016f010)) && (local_d48 + -8 != (undefined *)0x0)) { ppiVar11 = (int **)FUN_14003e7c0(ppiVar11,PTR_DAT_14016f010,uVar5,puVar15); local_d58 = ppiVar11; FUN_14003d040((int *)ppiVar11); local_d50 = 1; piVar7 = (int *)(local_d48 + -4); *piVar7 = *piVar7 + -1; if (*piVar7 == 0) { FUN_14003e8b0(local_d48 + -8); } FUN_14003d0d0((longlong)ppiVar11); } ppuVar2 = local_ce8; local_d48 = PTR_DAT_14016f010; if (((local_ce8 != (undefined **)0x0) && (local_ce8 != (undefined **)PTR_DAT_14016f010)) && (ppuVar1 = local_ce8 + -1, ppuVar1 != (undefined **)0x0)) { ppiVar11 = (int **)FUN_14003e7c0(ppiVar11,PTR_DAT_14016f010,uVar5,puVar15); local_d58 = ppiVar11; FUN_14003d040((int *)ppiVar11); local_d50 = 1; piVar7 = (int *)((longlong)ppuVar2 + -4); *piVar7 = *piVar7 + -1; if (*piVar7 == 0) { FUN_14003e8b0(ppuVar1); } FUN_14003d0d0((longlong)ppiVar11); } piVar7 = local_d40; piVar14 = local_d40; if (local_d40 == (int *)0x0) { piVar14 = (int *)PTR_DAT_14016f010; } uVar4 = 1; lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0); FUN_1400843d0(lVar8,1,(short *)piVar14,puVar15); if (((piVar7 != (int *)0x0) && (piVar7 != (int *)PTR_DAT_14016f010)) && (piVar7 + -2 != (int *)0x0)) { ppiVar11 = (int **)FUN_14003e7c0(lVar8,uVar4,piVar14,puVar15); local_d58 = ppiVar11; FUN_14003d040((int *)ppiVar11); local_d50 = 1; piVar14 = piVar7 + -1; *piVar14 = *piVar14 + -1; if (*piVar14 == 0) { FUN_14003e8b0(piVar7 + -2); } FUN_14003d0d0((longlong)ppiVar11); } } local_ce8 = &local_d28; FUN_14008a320((longlong *)&local_d28); if ((local_d20 != 0) && (local_d14 < 0)) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } } FUN_14003d0d0((longlong)piVar6); return; } return; }