/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14000c910 FUN_14000c910 * Pseudocode, not original source. */ undefined1 FUN_14000c910(undefined8 *param_1,ulonglong param_2,char param_3) { ulonglong uVar1; void *_Src; code *pcVar2; undefined1 uVar3; ulonglong _Size; if (param_2 == 0xffffffffffffffff) { std::_Xlength_error("string too long"); pcVar2 = (code *)swi(3); uVar3 = (*pcVar2)(); return uVar3; } uVar1 = param_1[3]; if (uVar1 < param_2) { FUN_14000c7d0(param_1,param_2,param_1[2]); } else if ((param_3 == '\0') || (0xf < param_2)) { if (param_2 == 0) { param_1[2] = 0; if (0xf < uVar1) { param_1 = (undefined8 *)*param_1; } *(undefined1 *)param_1 = 0; } } else { _Size = param_1[2]; if (param_2 < (ulonglong)param_1[2]) { _Size = param_2; } if (0xf < uVar1) { _Src = (void *)*param_1; if (_Size != 0) { memcpy(param_1,_Src,_Size); } operator_delete(_Src); } param_1[2] = _Size; param_1[3] = 0xf; *(undefined1 *)((longlong)param_1 + _Size) = 0; } return param_2 != 0; }