/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14001e2c0 FUN_14001e2c0 * Pseudocode, not original source. */ longlong * FUN_14001e2c0(longlong *param_1,void *param_2,size_t param_3) { ulonglong uVar1; void *pvVar2; undefined8 *puVar3; undefined1 auVar4 [16]; __uint64 _Var5; size_t *psVar6; size_t *local_28; uVar1 = *(ulonglong *)(*param_1 + 8); if ((uVar1 < param_3) || (param_3 * 3 + 0x18 < uVar1)) { if (param_3 == 0) { psVar6 = &DAT_14017ce88; } else { auVar4._8_8_ = 0; auVar4._0_8_ = param_3 + 0x1b >> 2; _Var5 = SUB168(ZEXT816(4) * auVar4,0); if (SUB168(ZEXT816(4) * auVar4,8) != 0) { _Var5 = 0xffffffffffffffff; } psVar6 = operator_new(_Var5); *psVar6 = param_3; *(undefined1 *)((longlong)psVar6 + param_3 + 0x10) = 0; psVar6[1] = param_3; local_28 = psVar6; } memcpy(psVar6 + 2,param_2,param_3); pvVar2 = (void *)param_1[1]; puVar3 = (undefined8 *)*param_1; *param_1 = (longlong)psVar6; param_1[1] = (longlong)local_28; if (puVar3 != &DAT_14017ce88) { operator_delete__(pvVar2); } } else { memmove((void *)(*param_1 + 0x10),param_2,param_3); *(size_t *)*param_1 = param_3; *(undefined1 *)(*param_1 + 0x10 + param_3) = 0; } return param_1; }