/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400d2160 FUN_1400d2160 * Pseudocode, not original source. */ ulonglong FUN_1400d2160(longlong *param_1,ushort param_2) { longlong *plVar1; uint uVar2; ushort *puVar3; ulonglong uVar4; longlong *plVar5; undefined8 *puVar6; longlong lVar7; ulonglong uVar8; undefined8 *puVar9; longlong *plVar10; longlong *local_res8; longlong local_res18 [2]; longlong local_48 [2]; undefined **local_38; int local_30; ushort local_2c; local_48[1] = 0xfffffffffffffffe; (**(code **)(*(longlong *)(param_1[0xce] + 0x78) + 0x10))(); puVar9 = (undefined8 *)0x0; if (((longlong *)param_1[3] != (longlong *)0x0) && (lVar7 = *(longlong *)param_1[3], lVar7 != 0)) { if (*(char *)(lVar7 + 0x40) == '\0') { puVar6 = puVar9; if ((undefined8 *)param_1[3] != (undefined8 *)0x0) { puVar6 = *(undefined8 **)param_1[3]; } if (*(char *)(puVar6 + 0x10) == '\0') goto LAB_1400d21ce; } uRam0000000000000000 = 1; } LAB_1400d21ce: if (((longlong *)param_1[3] != (longlong *)0x0) && (*(longlong *)param_1[3] != 0)) { local_res18[0] = 0; FUN_14009d860(local_res18,param_1 + 3); FUN_1400ac6e0(param_1[0xce],local_res18); local_res18[1] = 0; FUN_14009d860(param_1 + 3,local_res18 + 1); } param_1[0xc5] = 0; param_1[0xc6] = 0; uVar2 = *(uint *)(param_1[0xce] + 0x1748); uVar8 = (ulonglong)uVar2; plVar10 = (longlong *)((ulonglong)param_2 % uVar8); lVar7 = *(longlong *)(param_1[0xce] + 0x1728); if (lVar7 != 0) { for (puVar3 = *(ushort **)(lVar7 + (longlong)plVar10 * 8); (puVar3 != (ushort *)0x0 && ((uint)plVar10 == *(uint *)(puVar3 + 0x10) % uVar2)); puVar3 = *(ushort **)(puVar3 + 8)) { if (*puVar3 == param_2) { FUN_14009d860(param_1 + 3,(longlong *)(puVar3 + 4)); puVar6 = puVar9; if (((longlong *)param_1[3] != (longlong *)0x0) && (lVar7 = *(longlong *)param_1[3], lVar7 != 0)) { puVar6 = (undefined8 *)(lVar7 + -0x40); } puVar6[0x29] = 0; if (((longlong *)param_1[3] != (longlong *)0x0) && (lVar7 = *(longlong *)param_1[3], lVar7 != 0)) { puVar9 = (undefined8 *)(lVar7 + -0x40); } puVar9[0x24] = param_1; lVar7 = param_1[0xce]; uVar2 = *(uint *)(lVar7 + 0x1748); uVar8 = (ulonglong)param_2 / (ulonglong)uVar2; uVar4 = (ulonglong)param_2 % (ulonglong)uVar2; if (*(longlong *)(lVar7 + 0x1728) == 0) goto LAB_1400d2472; puVar3 = *(ushort **)(*(longlong *)(lVar7 + 0x1728) + uVar4 * 8); uVar8 = uVar4; goto joined_r0x0001400d2310; } } } local_res8 = operator_new(0x1c0); puVar6 = puVar9; if (local_res8 != (longlong *)0x0) { plVar10 = param_1; puVar6 = FUN_1400d32e0(local_res8,param_1[0xce],(longlong)param_1,uVar8); } if ((puVar6 == (undefined8 *)0x0) || (puVar6 + 8 == (undefined8 *)0x0)) { local_res8 = (longlong *)0x0; } else { local_res8 = (longlong *)FUN_14003e840(0x10); local_res8[1] = 1; *local_res8 = (longlong)(puVar6 + 8); } plVar1 = local_res8; FUN_14009d860(param_1 + 3,(longlong *)&local_res8); plVar5 = local_res8; if (plVar1 != (longlong *)0x0) { plVar1 = plVar1 + 1; *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { puVar6 = (undefined8 *)*local_res8; if (puVar6 != (undefined8 *)0x0) { (**(code **)*puVar6)(puVar6,1); } FUN_14003e8b0(plVar5); } } lVar7 = FUN_14009c0f0(param_1[0xce]); local_30 = *(int *)(lVar7 + 0x118); if ((local_30 == 0) || (local_30 == -1)) { FUN_14003e110( L"UDP 소켓을 생성하기 전에 TCP 연결이 이미 되어있는 상태이어야 하는데!" ); } local_38 = Proud::AddrPort::vftable; if (((longlong *)param_1[3] == (longlong *)0x0) || (lVar7 = *(longlong *)param_1[3], puVar6 = (undefined8 *)(lVar7 + -0x40), lVar7 == 0)) { puVar6 = puVar9; } local_2c = param_2; uVar8 = FUN_1400d36c0((longlong)puVar6,(longlong)&local_38,plVar10,uVar8); if ((char)uVar8 == '\0') { local_48[0] = 0; uVar8 = FUN_14009d860(param_1 + 3,local_48); uVar8 = uVar8 & 0xffffffffffffff00; } else { LAB_1400d2472: uVar8 = CONCAT71((int7)(uVar8 >> 8),1); } return uVar8; joined_r0x0001400d2310: if ((puVar3 == (ushort *)0x0) || (uVar8 = (ulonglong)*(uint *)(puVar3 + 0x10) / (ulonglong)uVar2, (uint)uVar4 != *(uint *)(puVar3 + 0x10) % uVar2)) goto LAB_1400d2472; if (*puVar3 == param_2) { uVar8 = FUN_1400a9590((char *)(lVar7 + 0x1720),puVar3,'\0'); goto LAB_1400d2472; } puVar3 = *(ushort **)(puVar3 + 8); goto joined_r0x0001400d2310; }