/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14005c010 FUN_14005c010 * Pseudocode, not original source. */ undefined8 FUN_14005c010(longlong param_1,uint param_2,undefined8 param_3,char *param_4) { int *piVar1; uint uVar2; longlong lVar3; short *psVar4; int *piVar5; ulonglong uVar6; int *piVar7; undefined8 uVar8; uint *puVar9; longlong lVar10; short *psVar11; ulonglong uVar12; short *local_res8; longlong local_48 [2]; int *local_38; undefined1 local_30; int *local_28; undefined1 local_20; local_48[1] = 0xfffffffffffffffe; piVar5 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))(); local_38 = piVar5; FUN_14003d040(piVar5); local_30 = 1; if (DAT_14017614f != '\0') { (**(code **)(**(longlong **)(param_1 + 0x20) + 200))(); } uVar12 = (ulonglong)*(uint *)(*(longlong *)(param_1 + 0x20) + 0xca0); uVar6 = (ulonglong)param_2 % uVar12; lVar3 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0xc80); if ((lVar3 != 0) && (puVar9 = *(uint **)(lVar3 + uVar6 * 8), puVar9 != (uint *)0x0)) { while (uVar2 = puVar9[8], (int)uVar6 == (int)((ulonglong)uVar2 % uVar12)) { if (*puVar9 == param_2) { lVar3 = *(longlong *)(puVar9 + 2); if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x228) == 0)) { *(undefined1 *)(lVar3 + 0x701) = 0; if (*param_4 == '\0') { if (*(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0) != 0) { FUN_14003e7c0(puVar9,(ulonglong)uVar2 % uVar12,uVar6,uVar12); local_res8 = (short *)PTR_DAT_14016f010; uVar6 = 0; if (*(longlong *)(lVar3 + 0x740) != 0) { uVar6 = *(ulonglong *)(*(longlong *)(lVar3 + 0x740) + 8); piVar5 = local_38; } uVar6 = uVar6 & 0xffffffff; FUN_140029b80((longlong *)&local_res8, L"클라이언트의 udp socket 생성실패. HostID=%d, udpSocketRefCount=%d" ,(ulonglong)*(uint *)(lVar3 + 0x6f8),uVar6); psVar4 = local_res8; psVar11 = local_res8; if (local_res8 == (short *)0x0) { psVar11 = (short *)PTR_DAT_14016f010; } uVar8 = 0; lVar10 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 0x17f0); FUN_1400843d0(lVar10,0,psVar11,uVar6); if (((psVar4 != (short *)0x0) && (psVar4 != (short *)PTR_DAT_14016f010)) && (psVar4 + -4 != (short *)0x0)) { piVar7 = (int *)FUN_14003e7c0(lVar10,uVar8,psVar11,uVar6); local_28 = piVar7; FUN_14003d040(piVar7); local_20 = 1; piVar1 = (int *)(psVar4 + -2); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14003e8b0(psVar4 + -4); } FUN_14003d0d0((longlong)piVar7); } } *(undefined1 *)(lVar3 + 0x700) = 0; *(undefined1 *)(lVar3 + 0x702) = 1; local_48[0] = 0; FUN_14009d860((longlong *)(lVar3 + 0x740),local_48); } else { FUN_14005a980(*(undefined8 *)(param_1 + 0x20),lVar3,uVar6,uVar12); } } break; } puVar9 = *(uint **)(puVar9 + 4); if (puVar9 == (uint *)0x0) break; } } uVar8 = FUN_14003d0d0((longlong)piVar5); return CONCAT71((int7)((ulonglong)uVar8 >> 8),1); }