/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400b5b50 FUN_1400b5b50 * Pseudocode, not original source. */ void FUN_1400b5b50(undefined **param_1,undefined8 param_2,undefined **param_3,undefined8 param_4) { longlong *plVar1; longlong *plVar2; longlong lVar3; undefined8 *puVar4; undefined ***pppuVar5; undefined8 *puVar6; longlong *local_res8; longlong local_res10 [3]; undefined **local_40; int local_38; undefined2 local_34; (**(code **)(*(longlong *)(param_1[0xce] + 0x78) + 0x10))(); if (((longlong *)param_1[3] != (longlong *)0x0) && (*(longlong *)param_1[3] != 0)) { return; } if (*(char *)((longlong)param_1 + 0x23) == '\0') { return; } lVar3 = FUN_140064bc0((longlong)param_1[0xce]); if (lVar3 == 0) { return; } *(undefined1 *)((longlong)param_1 + 0x23) = 0; puVar6 = (undefined8 *)0x0; if (((longlong *)param_1[3] != (longlong *)0x0) && (lVar3 = *(longlong *)param_1[3], lVar3 != 0)) { if (*(char *)(lVar3 + 0x40) == '\0') { puVar4 = puVar6; if ((undefined8 *)param_1[3] != (undefined8 *)0x0) { puVar4 = *(undefined8 **)param_1[3]; } if (*(char *)(puVar4 + 0x10) == '\0') goto LAB_1400b5beb; } uRam0000000000000000 = 1; } LAB_1400b5beb: if (((longlong *)param_1[3] != (longlong *)0x0) && (*(longlong *)param_1[3] != 0)) { local_res10[0] = 0; FUN_1400ad4b0(local_res10,(longlong *)(param_1 + 3)); FUN_1400756c0((longlong)param_1[0xce],local_res10); local_res10[1] = 0; FUN_1400ad4b0((longlong *)(param_1 + 3),local_res10 + 1); } local_res8 = operator_new(0x1c0); puVar4 = puVar6; if (local_res8 != (longlong *)0x0) { param_3 = param_1; puVar4 = FUN_1400b74e0(local_res8,(longlong)param_1[0xce],(longlong)param_1,param_4); } if ((puVar4 == (undefined8 *)0x0) || (puVar4 + 8 == (undefined8 *)0x0)) { local_res8 = (longlong *)0x0; } else { local_res8 = (longlong *)FUN_140030280(0x10); local_res8[1] = 1; *local_res8 = (longlong)(puVar4 + 8); } plVar1 = local_res8; FUN_1400ad4b0((longlong *)(param_1 + 3),(longlong *)&local_res8); plVar2 = local_res8; if (plVar1 != (longlong *)0x0) { plVar1 = plVar1 + 1; *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { puVar4 = (undefined8 *)*local_res8; if (puVar4 != (undefined8 *)0x0) { (**(code **)*puVar4)(puVar4,1); } FUN_1400302f0(plVar2); } } lVar3 = FUN_140064be0((longlong)param_1[0xce]); local_38 = *(int *)(lVar3 + 0x118); if ((local_38 == 0) || (local_38 == -1)) { FUN_14002fa10( L"UDP 소켓을 생성하기 전에 TCP 연결이 이미 되어있는 상태이어야 하는데!" ); } local_40 = Proud::AddrPort::vftable; local_34 = 0; if (((longlong *)param_1[3] == (longlong *)0x0) || (lVar3 = *(longlong *)param_1[3], puVar4 = (undefined8 *)(lVar3 + -0x40), lVar3 == 0)) { puVar4 = puVar6; } pppuVar5 = &local_40; FUN_1400b78c0((longlong)puVar4,(longlong)pppuVar5,(longlong *)param_3,param_4); if (((longlong *)param_1[3] != (longlong *)0x0) && (lVar3 = *(longlong *)param_1[3], lVar3 != 0)) { puVar6 = (undefined8 *)(lVar3 + -0x40); } FUN_1400b6ec0((longlong)puVar6,pppuVar5,param_3,param_4); FUN_1400b5550((longlong)param_1,pppuVar5,param_3,param_4); return; }